字符串索引两个字符串之间的差异

时间:2014-03-03 16:46:58

标签: java string compare

我有两个字符串列表,如下所示:

List1(由sql结果集生成)

10001
10100
10001

List2(由sql结果集生成)

10000
10000
10000

按钮操作;

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        try {
            // TODO add your handling code here:
            createList1();
            createList2();
            difference();
        } catch (Exception ex) {
            Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
        }       
    }    

差异无效;

public void difference (){
       int minLen = Math.min(List1.get(0).length(), List2.get(0).length());
        for (int i = -1 ; i != minLen ; i++) {
          char chA = List1.get(0).charAt(i);
          char chB = List2.get(0).charAt(i);
        if (chA != chB) {
        System.out.println(chA);
        }
       }  
    }

我想找出List1中索引0的哪些索引号不同。

提前致谢。

5 个答案:

答案 0 :(得分:5)

创建一个循环,将索引i从两个字符串中较短的字符串的长度为零,并使用==运算符逐个比较字符:

int minLen = Math.min(a.length(), b.length());
for (int i = 0 ; i != minLen ; i++) {
    char chA = a.charAt(i);
    char chB = b.charAt(i);
    if (chA != chB) {
        ...
    }
}

在开始比较之前,您需要检查ab是否不是null。否则,获取长度将触发空引用异常。

答案 1 :(得分:1)

试试这个:

public List<Integer> findDiffIndexes(String s1, String s2 ) {
    List<Integer> indexes = new ArrayList<Integer>();
    for( int i = 0; i < s1.length() && i < s2.length(); i++ ) {
        if( s1.charAt(i) != s2.charAt(i) ) {
            indexes.add( i );
        }
    }
    return indexes;
}

答案 2 :(得分:0)

在List 1和List2上执行循环,并比较索引值,如, 我假设你们两个名单都有相同的大小,

for(int i=0;i<list1.size();i++)
{
  if(!list1.get(i).equals(list2.get(i))
   {
     System.out.println("Not equal value of Index="+i);
   }
}

答案 3 :(得分:0)

假设两个字符串的长度始终相同......

String first = "10000";
String second = "10101";

ArrayList differentIndexes = new ArrayList();

for(int i=0; i<first.length(); i++){
if(first.charAt(i)!=second.charAt(i)){
differentIndexes.add(i);
}
}

答案 4 :(得分:0)

https://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/StringUtils.html#difference%28java.lang.String,%20java.lang.String%29

  

public static String difference(String str1,                                   String str2)

     

比较两个字符串,并返回它们不同的部分。 (更确切地说,返回第二个字符串的剩余部分,开始   从哪里与第一个不同。)

     

例如,差异(“我是机器”,“我是机器人”) - &gt; “机器人”。

 StringUtils.difference(null, null) = null
 StringUtils.difference("", "") = ""
 StringUtils.difference("", "abc") = "abc"
 StringUtils.difference("abc", "") = ""
 StringUtils.difference("abc", "abc") = ""
 StringUtils.difference("ab", "abxyz") = "xyz"
 StringUtils.difference("abcde", "abxyz") = "xyz"
 StringUtils.difference("abcde", "xyz") = "xyz"


Parameters:
    str1 - the first String, may be null
    str2 - the second String, may be null 
Returns:
    the portion of str2 where it differs from str1; returns the empty String if they are equal
Since:
    2.0