是否可以像這樣比較2個字符串。如何比較java中的2條語句
String test1 = "foo bar abc";
String test2 = "bar abc foo";
在java中通常不是字符串equals
。
我想用ArrayList
或array
通過空格分割字符串並進行比較。
是否有其他方法可用? 哪一個更好?
我想回答富巴ABC和酒吧ABC富是相同的。我想知道兩個詞是否出現在同一個詞中。
是否可以像這樣比較2個字符串。如何比較java中的2條語句
String test1 = "foo bar abc";
String test2 = "bar abc foo";
在java中通常不是字符串equals
。
我想用ArrayList
或array
通過空格分割字符串並進行比較。
是否有其他方法可用? 哪一個更好?
我想回答富巴ABC和酒吧ABC富是相同的。我想知道兩個詞是否出現在同一個詞中。
如果你的字符串表示詞的集合(即沒有重複的集合),自然的解決方案是使用Sets :
String test1 = "foo bar abc";
String test2 = "bar abc foo";
HashSet<String> set1 = new HashSet<>(Arrays.asList(test1.split(" ")));
HashSet<String> set2 = new HashSet<>(Arrays.asList(test2.split(" ")));
System.out.println(set1.equals(set2));
如果'test2 =「bar abc abc bar foo foo」'?如果與測試1相比,這應該是真的還是假? –
該問題應該針對OP。我想他在這種情況下認爲他們是平等的。但我在這裏可能是錯的... –
我同意 - 但這只是值得一提的。從技術上說,同樣的詞在那裏,所以如果重複不重要,這是好的 –
通過將兩個字符串拆分爲不同的單詞(使用正則表達式),您可以從每個字符串中創建一個列表。
然後你可以檢查第二列表包含在第一列表中的值:
String test1 = "foo bar abc";
String test2 = "bar abc foo";
List<String> list1 =Arrays.asList(test1.split("\\s+"));
List<String> list2 =Arrays.asList(test2.split("\\s+"));
if(!list2.containsAll(list1))
return false;//or print out "false", whichever suits you
這是許多可能性之一:
import java.util.Arrays;
(...)
String test1 = "foo bar abc";
String test2 = "bar abc foo";
if (Arrays.asList(test1.split("\\s+")).containsAll(Arrays.asList(test2.split("\\s+")))) {
return true;
} else {
return false;
}
您可以分割兩個字符串,排序結果數組和比較他們。
public static void main(String[] args) {
String test1 = "foo bar abc";
String test2 = "bar abc foo";
System.out.println(method(test1, test2));
}
private static boolean method(String test1, String test2){
String[] tokens1 = test1.split(" ");
String[] tokens2 = test2.split(" ");
Arrays.sort(tokens1);
Arrays.sort(tokens2);
return Arrays.equals(tokens1, tokens2);
}
你想比較什麼?這個詞? – ItamarG3
是的,然後使用每個循環,並檢查array2是否包含array1中的每個單詞 – XtremeBaumer
分詞和排序。比較數組是相同的 –