我需要比較兩個字符串,並找出它們是否相似,以及多少。例如,我有一個字符串"5000002105416"
,並與"5000003205416"
比較,它應該給我結果0.85
,因爲只有2
符號在包含13
符號的兩個字符串中不匹配。原因是我使用Zbar進行條形碼掃描,有時它會給我一些錯誤的結果,我需要檢查這個結果是否與我需要匹配的一些硬編碼標籤類似。如何檢查字符串的相似性
-1
A
回答
3
我們假設你String
■找相同的長度,所以你需要通過他們兩人的迭代函數,比較每個char
,找到差異的數目:
double similarity(String a, String b) {
if(a.length() == 0) return 1;
int numberOfSimilarities = 0;
for(int i = 0; i < a.length(); ++i) {
if(a.charAt(i) == b.charAt(i)) {
++numberOfSimilarities;
}
}
return (double) numberOfSimilarities/a.length();
}
+0
計算相似性而不是更簡單嗎?你正在做一個額外的操作。 '(1 - dif)' –
+0
此外,這也要麼返回1或0,因爲你不是鑄造整齊雙打 –
+0
@nickzoum,更新了我的答案。 ':)' –
0
你可以很容易有這樣的方法:
public static double compare(String string, String compareString){
int length = string.length();
int comLength = compareString.length();
int max = length;
int min = comLength;
int result = 0;
if (length < comLength){
max = comLength;
min = length;
}
for(int index = 0; index < min; index++){
if(string.charAt(index) == compareString.charAt(index)){
result++;
}
}
return (double)(result)/ (double)(max);
}
如果插入null
或空字符串這將引發一些錯誤,所以如果你不希望出現這種情況,那麼你可以添加一些檢查,像返回0 :
if(string.isEmpty()){
if(compareString.isEmpty()){
return 1;
}
return 0;
}else if(compareString.isEmpty()){
return 0;
}
或類似的東西。你也可以使用類似的邏輯來防止nulls
。
0
String a, b;
int count = 0;
for(int i = 0; i<13; i++){
if(a.charAt(i)==b.charAt(i)) count++;
}
System.out.println(count/13.0);
相關問題
- 1. 如何在php中檢查兩個字符串的相似性?
- 2. 檢測字符串中的相似性
- 3. 檢查相似性
- 4. StringBuilder和字符串相等性檢查
- 5. Python中的字符串相似性
- 6. 識別字符串中的相似性
- 7. 檢測字符串的相似性(緩慢)
- 8. 如何查找兩個字符串中的相似字數?
- 9. 按相似性分組字符串
- 10. Python字符串比較相似性
- 11. 字符串相似性 - > Levenshtein距離
- 12. 查找SYBASE中的字符串之間的相似性SQL
- 13. 如何檢查字符的字符串?
- 14. 如何確定字符相似性?
- 15. 檢查一個字符串是否與另一個字符串相似
- 16. 如何找到字符串相似度?
- 17. 如何衡量字符串之間的相似性?
- 18. 如何計算兩個字符串之間的相似性MYSQL
- 19. 查找二進制字符串中的相似性
- 20. 如何檢查PHP中兩個字符串的部分相似度
- 21. 如何檢查字符串
- 22. 如何使用SequenceMatcher查找兩個字符串之間的相似性?
- 23. python字符串和C字符數組之間的相似性
- 24. 如何根據SQL中的字符相似性比較字符串?
- 25. Scala字符串相似度
- 26. 字符串相似算法
- 27. 如何使用遞歸檢查2個字符串是否相似?
- 28. 如何比較2個具有相似字符的字符串?
- 29. 字符串比較算法,相關性,多少「相似」2個字符串
- 30. 使用JAVA中的字符串檢查ENUM值的相等性
他們會永遠是同樣的長度? – MrB
它看起來像你的字符串總是有相同的長度,所以你只需要計算不同的符號。簡單的循環將完成這項工作。 – talex
我更新了一些錯誤修復的答案,希望它有所幫助。 ':)' –