我怎樣才能做一個字符串替換,這樣「(」變成「)」和「)」變爲「(」?Java的括號翻轉的字符串
回答
這將是很有誘惑力的使用.replace()
,但如果你更換)
與(
,然後用)
(
會與所有)
結束。相反,遍歷字符串,並使用StringBuilder來構建你的字符串。
String swapParens(String s) {
StringBuilder sb = new StringBuilder();
sb.ensureCapacity(s.length()); // preallocate to prevent resizing
for(int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
switch(c) {
case ')': sb.append('('); break;
case '(': sb.append(')'); break;
default: sb.append(c);
}
}
return sb.toString();
}
我知道你可以把東西在那裏,一個佔位符交換,但如果它已經存在於你的字符串中, d有一個大問題。
考慮使用「xxx」作爲交換字符串。如果你的字符串是「abcx(yz)」,並且你替換(用xxx,你最終得到「abcxxxyz)」然後你替換成)(所以你有「abcxxxxyz(」。然後你用xxx替換),所以你有「 ABC)XYZ(」當然不是很酷!
如何
text.replace("(", "xxx").replace(")", "(").replace("xxx",")")
其中xxx
是肯定不會在字符串中出現的東西。
如何保證一個特定的子串永遠不會發生? – corsiKa 2011-04-17 21:33:47
那麼,我們可以保證,在特定類型的文本中出現特定的長子串的預期時間是宇宙死亡後的某個時間。 – 2011-04-17 21:45:21
你可以先用一個未使用的字符替換"("
,然後")"
與"("
,然後與")"
的未使用的字符:
String swapParens(String s) {
return s.replace('(', '\0').replace(')', '(').replace('\0', ')');
}
但是,如果字符串中已經有一個空字符,那將不起作用,所以它不是一個好的通用解決方案。
否則,你可以使用glowcoder的方法,但什麼可能是更有效的獲得字節到一個數組,自己更換它們,然後重新構建字符串:
String swapParens(String s) {
char[] bytes = s.toCharArray():
for (int i=0; i < bytes.length; ++i) {
if (bytes[i]=='(') bytes[i] = ')';
else if (bytes[i]==')') bytes[i] = '(';
}
return new String(bytes);
}
如果有一個字符你永遠不會在字符串中找到,你可以使用.replace(')', 'unusedChar').replace('(', ')').replace('unusedChar', '(');
StringBuffer str = new StringBuffer(text);
for(int i=0; i<str.length(); i++){
if(str.charAt(i)=='(') srt.setCharAt(i,')');
else if(str.charAt(i)==')') str.setCharAt(i,'(');
}
text = str.toString();
- 1. 的Java LibGDX翻轉字符串垂直
- 2. Java的字符串分割在括號
- 3. java中的翻轉字符
- 4. 括號中的字符串
- 5. 從括號,括號和連字符的字符串中獲取子字符串
- 6. 動態轉義字符串中的%符號和括號{}
- 7. 轉義C字符串花括號
- 8. Java字符串匹配括號
- 9. 翻轉字符串文字
- 10. 翻轉數字的符號的功能
- 11. 如何獲取字符串中的括號內的字(java)
- 12. java中的字符串,數字和括號的模式匹配
- 13. 字符串轉換爲字符數組,包括標點符號
- 14. 字符串翻轉錯誤
- 15. 分割字符串括號
- 16. 字符串匹配不包括括號
- 17. 基於開放大括號的Java中的拆分字符串
- 18. 的Groovy/Java的劈在括號字符串 「(」
- 19. 如何替換Java中的雙括號內的子字符串?
- 20. 翻轉字符串中的位
- 21. 雙引號括起來的字符串
- 22. 替換URL字符串中的括號
- 23. 用括號分割Python的字符串
- 24. [innerHtml]:帶左尖括號的字符串
- 25. 刪除括號內的字符串[iOS]
- 26. C#刪除字符串的括號
- 27. 刪除字符串中的括號
- 28. 圓括號中的Javascript字符串
- 29. 解析字符串中的括號
- 30. 尖括號中的PHP字符串
這當然是最正確的方法。實際上,它可能是最有效的方式,因爲字符串只被複製一次。 – 2011-04-17 21:42:05
我喜歡你的例子,顯示原始字符串中不包含'xxx'可能會導致麻煩。 – 2011-04-17 21:43:24
我只是建議增加容量到StringBulder ctor以避免重新分配:StringBuilder(s.length())(更新:被添加) – 2011-04-17 21:47:43