应用简要说明
用户看到带有单词的TextView。用户将单击一个按钮,该按钮将触发“语音转文本” API,并说出TextView上给出的单词。现在,我需要将语音中的文本与textview中的文本进行匹配。
假设文本视图中的文本为“你好,你好”
从语音到文本Api的文本是“你好,你好”
我知道我们可以像这样
if (string1.equals(string2)){
}
但是我不想像整个字符串一样匹配。我想一一匹配字符串的每个字符。
如果字符匹配,则匹配字符的颜色为绿色,否则为红色。
答案 0 :(得分:0)
退房并想出了类似这样的东西:
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
}
}
答案 1 :(得分:0)
您可以在xml中使用水平方向制作一个空的线性布局,并在不同的textView中进行比较后动态添加每个字母,例如:
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++;
}
答案 2 :(得分:-1)
您可以遍历一个字符串并检查每个字符。
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]);
}
}
}