[英]how to compare two strings in java?
我有如下情況列表:字符串A <------->字符串B
我應該比較A與B在以下條件下:
1-如果讀取中顯示的數字在兩端均不同,但其余相同,則表示A =B。
2-在某些情況下,例如A邊的第一個以紅色顯示的數字后沒有空白,但b邊存在以紅色顯示的數字和X后面的空白。
3-也有不同的情況,如數字3
現在如何最好地比較這兩個字符串?
private static void controlSimilarity(String memo,String ck,String bc,String id,String product) {
if(!id.equals(product)){
listIdentifier.add(new MmoCnBcIdProduct(memo,ck,bc,id,product));
}
我會嘗試“標准化”字符串。 將兩個字母都大寫,將“ \\ s + X \\ s +”替換為“ X”,將“ \\ s +%”替換為“%”,將“ \\ s + MG”替換為“ MG”等,然后按空格或某些正則表達式進行拆分(掃描程序類或Guava的Splitter)並比較字符串的各個部分。
根據肖恩·歐文的建議; 可能可以使用以下正則Regex
:
/(\w.*?)(\d+)X(\w.*)/
並且在捕獲組1和捕獲組3之間放置任何空格后,它們應該相等。
通過空間Spilt
琴弦 。
比較分割結果的[0]
和[1]
。
合並所有其余索引以組成一個字符串。 (合並前使用trim
)
找到indexOf
X
並使用subString
直到字符串結尾。
使用equals
或equalsIgnoreCase
比較組合的(子)字符串。
對於每組字符串,從步驟1重復。
根據您的樣本數據,我建議通過在每組數字和字符之間添加空格來規范化每個字符串。 所以樣本2
TASIGNA CAPS 1X200MG <----> TASIGNA CAPS 112 X 200 MG
會成為:
TASIGNA CAPS 1 X 200 MG <----> TASIGNA CAPS 112 X 200 MG
現在,只需在空白處進行分割並比較單個組。 所有人都應該相同,但一個數字組。 根據數據類型(CAPS,COMP,CREME等),您可能會忽略另一個組。 X之前的一個或CREME之后的一個,等等。這在很大程度上取決於您的數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.