我有一個像這樣的字符串「HelloWorldMyNameIsCarl」,我希望它變得像「Hello_World_My_Name_Is_Carl」。我怎樣才能做到這一點?如何在Java字符串中的每個大寫字母之前添加下劃線?
回答
是的,正則表達式可以爲你做的:
"HelloWorldMyNameIsCarl".replaceAll("(.)([A-Z])", "$1_$2")
表達[A-Z]
將每一個大寫字母匹配,放入第二組。您需要第一組.
以避免替換第一個「H」。
由於Piligrim指出,此解決方案不適用於任意語言。爲了捕獲由Unicode標準定義的任何大寫字母,我們需要匹配所有大寫字母的Unicode 4.1 subproperty\p{Lu}
。所以更一般的解決方案看起來像
"HelloWorldMyNameIsCarl".replaceAll("(.)(\\p{Lu})", "$1_$2")
謝謝Piligrim。
打敗我吧。我不記得Java正則表達式替換是\ 1還是$ 1,所以我不得不查看它。 – 2009-10-19 21:20:07
請注意,此解決方案(與ChssPly76給出的解決方案不同)不適用於所有大寫字母,但僅適用於英文版本:僅缺少所有大寫字母。 – Henning 2009-10-19 21:41:24
我認爲他的例子字符串意味着英語。 – 2009-10-19 22:55:02
這裏有一個提示,讓你沿着一個可能的解決方案在想:
- 查找分裂串入部分在每個大寫字母
- 加入分割字符串回到了他們 之間下劃線的方式
有用的關鍵詞:
- 分裂
- 正則表達式/正則表達式
這個功課?爲了讓你開始:
- 創建一個StringBuffer
- 遍歷您的字符串。
- 檢查每個字符是否爲大寫(
java.lang.Character
類有幫助) - 如果是,則將下劃線追加到緩衝區。
- 將當前字符追加到緩衝區。
分裂或正則表達式看起來更自然。 – 2009-10-19 21:10:58
他甚至要求正則表達式。 – 2009-10-19 21:11:28
+1 - 這對我來說似乎是一個完美可行的解決方案(特別是如果這是家庭作業)。 – 2009-10-19 21:12:24
- 1. 預先在字符串中加下劃線的大寫字母
- 2. PHP - 前大寫字母加下劃線
- 3. 如何在字符串中的每個大寫字母前添加「 - 」
- 4. 在大寫字母之前加下劃線
- 5. 如何在每個大寫字母之間添加空白處?
- 6. Java如何在大寫字母串之前對小寫字母進行排序
- 7. 如何反轉字符串中每個字母的大小寫?
- 8. 在/之後大寫每個字母大寫字符
- 9. 在Java中檢查字符串中的字母大寫(上/下)
- 10. 加下劃線的前n個字符
- 11. 如何在使用Java的字符串中首字母大寫?
- 12. 如何在字符串數組中添加下劃線?
- 13. 在字符串中的空格之前添加字母
- 14. 我如何下劃線分隔字符串轉換爲大寫的字符串
- 15. 如何獲得字母+數字+下劃線之間的字符串。和(
- 16. 字符串 - 大寫元音,下一個字母的字母 - Javascript
- 17. 如何計算Java中的字符串中的大寫字母?
- 18. java中兩個字符串的大寫字母的常見字符/字母
- 19. 如何用下劃線替換字符串的字母?
- 20. Python中的字符串中的每一個字母大寫?
- 21. 將字符串中的每一個其他字母都大寫 - 列表中的每個其他字母大寫
- 22. 僅字符串首字母大寫java
- 23. 在每個大寫字母后加小寫字母后加小寫字母
- 24. 在下劃線之前或之後提取子字符串
- 25. sed?在每行的分隔符之前大寫所有字母
- 26. iTextsharp字符串之間的下劃線
- 27. 大寫列表中每個字符串的第一個字母大寫
- 28. 在每個單詞之前在字符串中添加空格
- 29. 排序字符串在C中的小寫字母前加大寫字母字母排序
- 30. 在Matlab中字符串中的每個單詞的首字母大寫/首字母大寫?
「IsCarl」是故意還是你試圖完成的部分? – Otis 2009-10-19 21:02:56
只是一個錯誤,對不起 – w4nderlust 2009-10-20 15:03:02