我有一個字符串,如s = "abc.def..ghi"
。我想替換單個'。'有兩個'。但是,s.replace(".", "..")
產生「abc..def .... ghi」。我怎樣才能獲得正確的行爲?我正在尋找的輸出是s = "abc..def..ghi"
。替換字符串中的字符,Java
回答
更換點,只有當它是由兩個字符
String foo = s.replaceAll("(\\w)\\.(\\w)", "$1..$2");
或者包圍的@Thilo評論說,只有當它是由兩個非點
包圍String foo = s.replaceAll("([^.])\\.([^.])", "$1..$2");
並且即使點位於t的開始/結束處,用兩個點代替單點他串,使用負前瞻和回顧後: (示例串:.abc.def..ghi.
將成爲..abc..def..ghi..
)
String foo = s.replaceAll("(?<!\\.)\\.(?!\\.)", "..");
s.replace("...","..");
s.replace("....","..");
取決於輸入可能性..
我的意思是他需要在第一次調用s.replace之後使用這些。另外,他需要對這樣的字符串的輸入流進行一些控制,否則世界上沒有任何解析器可以幫助他。 –
請看看寶寶的答案,並考慮是否要刪除這個答案。 –
如果你不知道如何使用正則表達式,然後使用StringTokenizer
分割字符串並再次拼接做..
。
代碼:
public static void main(String[] args) {
String s = "abc.def..ghi";
StringTokenizer s2 = new StringTokenizer(s, ".");
StringBuilder sb = new StringBuilder();
while(s2.hasMoreTokens())
{
sb.append(s2.nextToken().toString());
sb.append("..");
}
sb.replace(sb.length()-2, sb.length(), ""); // Just delete an extra .. at the end
System.out.println(sb.toString());
}
我知道,相比一行正則表達式的代碼是很大的,但如果您在使用正則表達式的任何麻煩我張貼的情況。如果你認爲它比接受的答案慢,我用System.currentTimeMillis()
做了一個開始和結束時間,我的速度更快了。我不知道這個測試是否有例外。
無論如何,我希望它有幫助。
我認爲這不工作,如果你有三個連續點(雖然公平,預期的行爲是不明確的,我假設你想把它們保持爲三個點,而不是將它們變成兩個點)。 – Thilo
@Thilo我嘗試了開始,結束和多點(> 3)之間的點。有效。 – SkrewEverything
@Thilo它是'a..b' – SkrewEverything
使用變通一下:
str = str.replaceAll("(?<!\\.)\\.(?!\\.)", "..")(
正則表達式讀作「點,而不是一個點之前,而不是之後點」。這將處理位於開始/結束處和/或由字面上任何其他字符圍繞的點的邊緣情況。
由於四處查看並不會消耗輸入,所以您不必在替換術語中使用反向引用。
- 1. 替換字符串中的字符Java
- 2. Java - 替換字符串中的字符
- 3. Java - 替換字符串中的字符
- 4. 替換Java字符串中的'\'字符
- 5. Java - 字符串中的字符替換
- 6. 用字符串替換字符串java
- 7. java中字符串替換字符串與字符
- 8. 替換字符串 - java的
- 9. Java的替換字符串
- 10. 字符串中的字符串替換
- 11. 替換字符串替換的Java
- 12. Java字符串替換
- 13. 字符串替換爲「」Java
- 14. 替換字符串字符
- 15. 在Java中的2個字符串之間替換字符串
- 16. 替換字符串中的字符
- 17. Swift - 替換字符串中的字符
- 18. c中的字符串替換字符#
- 19. 替換字符串中的字符?
- 20. Postgres替換字符串中的字符
- 21. 替換字符串中的字符
- 22. 替換字符串中的字符
- 23. 替換字符串中的字符
- 24. 替換字符串中的字符
- 25. VBA - 替換字符串中的字符
- 26. 字符串中的替換字符
- 27. 字符串中的字符替換
- 28. 替換字符串中的字符
- 29. 替換字符串中的字符malloc
- 30. 替換&字符串中的字符
你能推薦一個好的「正則表達式」資源嗎? – Adam
I tink http://www.regular-expressions.info/雖然看起來不太好,但也不算太壞。但你會發現很多。前瞻/後面解釋在這裏:http://www.regular-expressions.info/lookaround.html @亞當 – baao