android 部分突出效果,java - 如何比较两个EditText字符串然后突出显示Android中的不同之处? - 堆栈内存溢出...

本文介绍如何在两个EditText字符串对比中,找出不同字符并高亮显示,例如在'18X2101UG1'和'18Y2101UG1'中,着重标记不同字符'Y'。已尝试的方法使用SpannableString但结果不准确,寻求解决方案。
摘要由CSDN通过智能技术生成

我有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);

}

}

}

但是结果并不准确。 请帮忙。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值