1. 程式人生 > >java比較兩個字串完全不同處高亮顯示(過濾了某些字串前面不不相干字元)

java比較兩個字串完全不同處高亮顯示(過濾了某些字串前面不不相干字元)

java比較兩個字串完全不同處高亮顯示(過濾了某些字串前面不相干字元)

歡迎各位使用並優化,因為我也不太清楚這裡面是不是有嚴重的問題,後期我會再度優化的,寫這個東西主要是因為在網上很難找到類似的東西= =。
再說一句,請各位大佬帶我飛好嘛!!畢竟我是個小碼農。程式設計學習群:459048047,歡迎來玩呀!
字串比較結果

public class CompareStrUtil {

    // 長字串向短字串比
    public static String compareStrLong(String char1, String char2, String colour) {
        String
bcolor = "<font color='" + colour + ";'>"; String ecolor = "</font>"; StringBuffer sb = new StringBuffer(); char[] a = new char[char1.length()]; for (int i = 0; i < char1.length(); i++) { a[i] = char1.charAt(i); } char[] b = new
char[char2.length()]; for (int i = 0; i < char2.length(); i++) { b[i] = char2.charAt(i); } // 不同字元集合 Map<Object, Object> map1 = new HashMap<Object, Object>(); // 包含字元集合 Map<Object, Object> map2 = new HashMap<Object, Object
>(); if (char1.length() > char2.length()) { for (int i = 0; i < a.length; i++) { if (i == a.length - 1) { if (i > 1) { if (String.valueOf(b).contains(String.valueOf(a[i - 1]) + String.valueOf(a[i]))) { map2.put(i - 1, a[i - 1]); map2.put(i, a[i]); }else{ map1.put(i, a[i]); } } else { map2.put(i, a[i]); } } else { if (String.valueOf(b).contains(String.valueOf(a[i]) + String.valueOf(a[i + 1]))) { if (i > 1) { if (String.valueOf(b).contains(String.valueOf(a[i - 1]) + String.valueOf(a[i]))) { map2.put(i - 1, a[i - 1]); map2.put(i, a[i]); } } else { map2.put(i, a[i]); } } else { if (i > 0) { if (String.valueOf(b).contains(String.valueOf(a[i - 1]) + String.valueOf(a[i]))) { map2.put(i - 1, a[i - 1]); map2.put(i, a[i]); } else { map1.put(i, a[i]); } } else { map1.put(i, a[i]); } } } } } else { for (int i = 0; i < b.length; i++) { if (i == b.length - 1) { if (i > 1) { if (String.valueOf(a).contains(String.valueOf(b[i - 1]) + String.valueOf(b[i]))) { map2.put(i - 1, b[i - 1]); map2.put(i, b[i]); }else{ map1.put(i, b[i]); } } else { map2.put(i, b[i]); } } else { if (String.valueOf(a).contains(String.valueOf(b[i]) + String.valueOf(b[i + 1]))) { if (i > 1) { if (String.valueOf(a).contains(String.valueOf(b[i - 1]) + String.valueOf(b[i]))) { map2.put(i - 1, b[i - 1]); map2.put(i, b[i]); } } else { map2.put(i, b[i]); } } else { if (i > 0) { if (String.valueOf(a).contains(String.valueOf(b[i - 1]) + String.valueOf(b[i]))) { map2.put(i - 1, b[i - 1]); map2.put(i, b[i]); } else { map1.put(i, b[i]); } } else { map1.put(i, b[i]); } } } } } if (char1.length() > char2.length()) { for (int i = 0; i < a.length; i++) { if (map1.get(i) != null) { sb.append(bcolor).append(map1.get(i)).append(ecolor); } else if (map2.get(i) != null) { sb.append(map2.get(i)); } } } else if (char1.length() <= char2.length()) { for (int i = 0; i < b.length; i++) { if (map1.get(i) != null) { sb.append(bcolor).append(map1.get(i)).append(ecolor); } else if (map2.get(i) != null) { sb.append(map2.get(i)); } } } return sb.toString(); } // 短字串向長字串比 public static String compareStrshort(String char1, String char2, String colour) { String bcolor = "<font color='" + colour + ";'>"; String ecolor = "</font>"; StringBuffer sb = new StringBuffer(); char[] a = new char[char1.length()]; for (int i = 0; i < char1.length(); i++) { a[i] = char1.charAt(i); } char[] b = new char[char2.length()]; for (int i = 0; i < char2.length(); i++) { b[i] = char2.charAt(i); } // 不同字元集合 Map<Object, Object> map1 = new HashMap<Object, Object>(); // 包含字元集合 Map<Object, Object> map2 = new HashMap<Object, Object>(); if (char1.length() > char2.length()) { for (int i = 0; i < b.length; i++) { if (i == b.length - 1) { if (i > 1) { if (String.valueOf(a).contains(String.valueOf(b[i - 1]) + String.valueOf(b[i]))) { map2.put(i - 1, b[i - 1]); map2.put(i, b[i]); }else{ map1.put(i, b[i]); } } else { map2.put(i, b[i]); } } else { if (String.valueOf(a).contains(String.valueOf(b[i]) + String.valueOf(b[i + 1]))) { if (i > 1) { if (String.valueOf(a).contains(String.valueOf(b[i - 1]) + String.valueOf(b[i]))) { map2.put(i - 1, b[i - 1]); map2.put(i, b[i]); } } else { map2.put(i, b[i]); } } else { if (i > 0) { if (String.valueOf(a).contains(String.valueOf(b[i - 1]) + String.valueOf(b[i]))) { map2.put(i - 1, b[i - 1]); map2.put(i, b[i]); } else { map1.put(i, b[i]); } } else { map1.put(i, b[i]); } } } } } else { for (int i = 0; i < a.length; i++) { if (i == a.length - 1) { if (i > 1) { if (String.valueOf(b).contains(String.valueOf(a[i - 1]) + String.valueOf(a[i]))) { map2.put(i - 1, a[i - 1]); map2.put(i, a[i]); }else{ map1.put(i, a[i]); } } else { map2.put(i, a[i]); } } else { if (String.valueOf(b).contains(String.valueOf(a[i]) + String.valueOf(a[i + 1]))) { if (i > 1) { if (String.valueOf(b).contains(String.valueOf(a[i - 1]) + String.valueOf(a[i]))) { map2.put(i - 1, a[i - 1]); map2.put(i, a[i]); } } else { map2.put(i, a[i]); } } else { if (i > 0) { if (String.valueOf(b).contains(String.valueOf(a[i - 1]) + String.valueOf(a[i]))) { map2.put(i - 1, a[i - 1]); map2.put(i, a[i]); } else { map1.put(i, a[i]); } } else { map1.put(i, a[i]); } } } } } if (char1.length() > char2.length()) { for (int i = 0; i < a.length; i++) { if (map1.get(i) != null) { sb.append(bcolor).append(map1.get(i)).append(ecolor); } else if (map2.get(i) != null) { sb.append(map2.get(i)); } } } else if (char1.length() <= char2.length()) { for (int i = 0; i < b.length; i++) { if (map1.get(i) != null) { sb.append(bcolor).append(map1.get(i)).append(ecolor); } else if (map2.get(i) != null) { sb.append(map2.get(i)); } } } return sb.toString(); } // 獲取對比標題 public static String getcompareStr(String char1, String char2, String colour, String tag1, String tag2) { String bcolor = "<font color='" + colour + ";'>" + tag1; String ecolor = tag2 + "</font>"; StringBuffer sb = new StringBuffer(); char[] a = new char[char1.length()]; for (int i = 0; i < char1.length(); i++) { a[i] = char1.charAt(i); } char[] b = new char[char2.length()]; for (int i = 0; i < char2.length(); i++) { b[i] = char2.charAt(i); } // 不同字元集合 Map<Object, Object> map1 = new HashMap<Object, Object>(); // 包含字元集合 Map<Object, Object> map2 = new HashMap<Object, Object>(); for (int i = 0; i < a.length; i++) { if (i == a.length - 1) { if (i > 1) { if (String.valueOf(b).contains(String.valueOf(a[i - 1]) + String.valueOf(a[i]))) { map2.put(i - 1, a[i - 1]); map2.put(i, a[i]); }else{ map1.put(i, a[i]); } } else { map2.put(i, a[i]); } } else { if (String.valueOf(b).contains(String.valueOf(a[i]) + String.valueOf(a[i + 1]))) { if (i > 1) { if (String.valueOf(b).contains(String.valueOf(a[i - 1]) + String.valueOf(a[i]))) { map2.put(i - 1, a[i - 1]); map2.put(i, a[i]); } } else { map2.put(i, a[i]); } } else { if (i > 0) { if (String.valueOf(b).contains(String.valueOf(a[i - 1]) + String.valueOf(a[i]))) { map2.put(i - 1, a[i - 1]); map2.put(i, a[i]); } else { map1.put(i, a[i]); } } else { map1.put(i, a[i]); } } } } for (int i = 0; i < a.length; i++) { if (map1.get(i) != null) { sb.append(bcolor).append(map1.get(i)).append(ecolor); } else if (map2.get(i) != null) { sb.append(map2.get(i)); } } return sb.toString(); } }