Java 在Android中匹配多个字符串
我有三根弦 String 1=“你好,你今天过得怎么样” String 2=“你好,你好吗” String 3=“你今天过得怎么样” 我想将字符串2的每个单词与字符串1匹配,并相应地更改单词的颜色。我使用了下面的代码,它的工作良好Java 在Android中匹配多个字符串,java,android,string,Java,Android,String,我有三根弦 String 1=“你好,你今天过得怎么样” String 2=“你好,你好吗” String 3=“你今天过得怎么样” 我想将字符串2的每个单词与字符串1匹配,并相应地更改单词的颜色。我使用了下面的代码,它的工作良好 private void printDiff(final Context context, String sentence1, String sentence2) { String[] array1 = sentence1.split(" ");
private void printDiff(final Context context, String sentence1, String sentence2) {
String[] array1 = sentence1.split(" ");
String[] array2 = sentence2.split(" ");
SpannableStringBuilder sb = new SpannableStringBuilder(sentence1);
for (int i = 0; i < array1.length; i++) {
int colorRes;
if (i < array2.length) {
colorRes = array1[i].equalsIgnoreCase(array2[i]) ? R.color.colorPrimary : R.color.colorAccent;
} else {
colorRes = R.color.black;
}
int startIndex = getStartIndexOf(array1, i);
int endIndex = startIndex + array1[i].length();
sb.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, colorRes)), startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
public static int getStartIndexOf(String[] array, int index) {
int count = 0;
for (int i = 0; i < index; i++) {
count += array[i].length();
count++;
}
return count;
}
private void printDiff(最终上下文,字符串语句1,字符串语句2){
字符串[]数组1=句子1.split(“”);
String[]array2=sentence2.split(“”);
SpannableStringBuilder sb=新的SpannableStringBuilder(第1句);
for(int i=0;i
您可以在下图中看到输出
现在我想匹配字符串3和字符串1,我想输出如下图所示,因为字符串2和字符串1已经匹配
谁能帮帮我吗。我不知道怎么做。你可以有这样的东西:
String text;
String[] pattern;
int matchedSoFar = 0;
while(matchedSoFar < text.length) {
for(int i = 0; matchedSoFar < text.length and i < pattern.length; i++) {
for(int j = 0; matchedSoFar < text.length and j < pattern[i].length; j++) {
// set color if pattern[i][j] == text[matchedSoFar]
matchedSoFar++;
}
}
}
字符串文本;
字符串[]模式;
int matchedSoFar=0;
while(matchedSoFar
您可以拥有如下功能:
String text;
String[] pattern;
int matchedSoFar = 0;
while(matchedSoFar < text.length) {
for(int i = 0; matchedSoFar < text.length and i < pattern.length; i++) {
for(int j = 0; matchedSoFar < text.length and j < pattern[i].length; j++) {
// set color if pattern[i][j] == text[matchedSoFar]
matchedSoFar++;
}
}
}
字符串文本;
字符串[]模式;
int matchedSoFar=0;
while(matchedSoFar
是否要继续将字符串3与字符串2结束的字符串1匹配,还是要从字符串1的开头开始匹配?是否要继续将字符串3与字符串2结束的字符串1匹配…是的,据我所知,只有两个字符串语句1
和语句2
。字符串3在哪里?是的..你能帮我如何在这个逻辑中集成字符串3为什么不连接字符串2和字符串3?然后将连接的字符串与字符串1进行比较?是否继续将字符串3与字符串2结束的字符串1进行匹配,还是从字符串1的开头开始匹配?是否继续将字符串3与字符串2结束的字符串1进行匹配…是的,据我所知,只有两个字符串sentence1
和sentence2
。字符串3在哪里?是的..你能帮我如何在这个逻辑中集成字符串3为什么不连接字符串2和字符串3?然后将串接的字符串与字符串1进行比较?将字符串s1作为文本
,将字符串s1作为模式
中的s2和s3,将字符串s1作为文本
,将字符串s2和s3作为模式