应用简述
用户看到,有一个字一个TextView。用户会点击一个按钮,将触发语音到文本的API,并说对的TextView所给词。现在我需要匹配的语音文本中的TextView文本。
在文本视图假设文本是“你好,你怎么样”
从语音到文本的文本API是“你好你怎么样”
我知道我们可以像匹配
if (string1.equals(string2)){
}
但我不希望像匹配整个字符串。我想通过一个一个串的每个字符相匹配。
如果匹配的字符的字符匹配的颜色,然后将其他绿色IT将是红色。
签出,像这样的东西来到了:
String viewText = textview.getText();
String spokenText; //define yourself
for (int i = 0; i <= viewText.length(); i++) {
char letter = viewText.charAt(i);
char spokenLetter = spokenText.charAt(i);
if(letter==spokenLetter) {
//proceed further
}
else {
// return false
}
}
你可以在你的XML空的线性布局,水平方向,并在不同的TextView forexample像比较后动态添加的每个字母:
LinearLayout layout = (LinearLayout) findViewById(R.id.your_linear_layout);
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
int i = 0;
for(char a: string1.toCharArray()){
char b = string2.charAt(i);
TextView tv = new TextView(this);
if(a == b){
tv.setText(String.valueOf(a);
tv.setColor(Color.GREEN);
tv.setLayoutParams(params);
layout.addView(tv);
}else{
tv.setText(String.valueOf(a);
tv.setColor(Color.RED);
tv.setLayoutParams(params);
layout.addView(tv);
}
i++;
}
你可以通过一个字符串迭代并检查每个字符的方式。
using System;
class Program
{
static void Main()
{
const string s = "peace";
foreach (char c in s)
{
Console.WriteLine(c);
}
for (int i = 0; i < s.Length; i++)
{
Console.WriteLine(s[i]);
}
}
}