Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中匹配多个字符串_Java_Android_String - Fatal编程技术网

Java 在Android中匹配多个字符串

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(" ");

我有三根弦

String 1=“你好,你今天过得怎么样”

String 2=“你好,你好吗”

String 3=“你今天过得怎么样”

我想将字符串2的每个单词与字符串1匹配,并相应地更改单词的颜色。我使用了下面的代码,它的工作良好

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作为
模式