我一直在試圖做的是用他們的小寫字母(在java中)替換任何重複的字母。例如:如何使用(正則表達式)刪除java中的重複字母,並區分大小寫不敏感
我想映射的功能:
bob -> bob
bOb -> bob
bOOb -> bob
bOob -> bob
boOb -> bob
bob -> bob
Bob -> Bob
bOb -> bob
不過,我一直沒有成功做到這一點使用regexs(在Java中)。
我曾嘗試以下:
String regex = "([A-za-z])\\1+";
String str ="bOob";
Pattern pattern = Pattern.compile(regex , Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(str);
System.out.println(matcher.replaceAll("$1"));
然而,這將返回鮑勃和不鮑勃。 (它對boOb有效)。
我也試過:
Pattern pattern = Pattern.compile("(?i)([A-Za-z0-9])(?=\\1)", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(str);
return matcher.replaceAll("");
此解決一個問題,現在布布 - >鮑勃但因爲現在它映射布布鮑勃帶來了另一個問題。
注意:它也應該映射BOobOoboObOoObooOoOoOoOoOOb - > Bobobobobob。
我覺得在這一點上它可能更容易循環字符串,並根據每個字符做一些邏輯,但我只是不想放棄使用正則表達式......如果存在使用正則表達式的解決方案,是否更有效率比循環遍歷每個角色?
在此先感謝!
PS:據我所知,人們可以只需更低的情況下,一切傳遞字符串之前,不過,那不是我想要的東西,因爲它映射:
鮑勃 - >鮑勃
你想映射bOb - >鮑勃,但也鮑勃 - >鮑勃?你需要添加第一個字母不能轉換的要求 – morgano