我有2个必须比较的EditText字符串,我知道如何比较并获得“ OK”(如果它们都匹配)和“ NOK”(如果它们不匹配)之类的结果。 但是我不知道如何找到不同的字符或部分。 举个例子:
EditText editTextStdCode = 18X2101UG1
相比于
EditText editTextActCode = 18Y2101UG1
结果是“诺”,因为editTextActCode不同于editTextStdCode在第18Ÿ2101UG1,我想强调的标记Y,因为它是从一个不同的角色editTextActCode 。
我尝试过的事情正在使用SpannableString,如下所示:
private void highlightChar(Integer startSpan, Integer endSpan) {
SpannableString spannableStr = new SpannableString(editTextActCode.getText().toString());
BackgroundColorSpan backgroundColorSpan = new BackgroundColorSpan(Color.GREEN);
spannableStr.setSpan(backgroundColorSpan, startSpan, endSpan, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
editTextActCode.setText(spannableStr);
}
/**
*
* @param editText
* @param fIndex
* @param lIndex
* @param textToHighlight
*/
public void setHighLightedText(EditText editText, Integer fIndex, Integer lIndex, String textToHighlight) {
String tvt = editText.getText().toString().substring(fIndex,lIndex);
int ofe = tvt.indexOf(textToHighlight);
Spannable wordToSpan = new SpannableString(editText.getText());
for (int ofs = 0; ofs < tvt.length() && ofe != -1; ofs = ofe + 1) {
ofe = tvt.indexOf(textToHighlight, ofs);
if (ofe == -1)
break;
else {
wordToSpan.setSpan(new BackgroundColorSpan(0xFFFFFF00), ofe, ofe + textToHighlight.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
editText.setText(wordToSpan, TextView.BufferType.SPANNABLE);
}
}
}
但是结果并不准确。 请帮忙。