從字符串中篩選出所有UTF-8標點符號和符號如「✁✂✃✄✅✇✈」等的最佳和最有效的方法是什麼?簡單地過濾出所有不是a-z,A-Z和0-9的字符都不是一種選擇,因爲我想保留來自其他語言的字母(±,ę,ó等) 在此先感謝。從字符串中篩選出UTF-8標點和符號
4
A
回答
3
你可以使用\p{L}
匹配所有Unicode字母。例如:
public static void main(String[] args) throws IOException {
String[] test = {"asdEWR1", "ąęóöòæûùÜ", "sd,", "✀","✁","✂","✃","✄","✅","✆","✇","✈"};
for (String s : test)
System.out.println(s + " => " + s.replaceAll("[^\\p{L}^\\d]", ""));
}
輸出:
asdEWR1 => asdEWR1
ąęóöòæûùÜ => ąęóöòæûùÜ
sd, => sd
✀ =>
✁ =>
✂ =>
✃ =>
✄ =>
✅ =>
✆ =>
✇ =>
✈ =>
+0
謝謝!這正是我需要的 – user1315305 2013-05-13 16:48:56
+0
對於那些需要JavaScript的人來說:https://www.npmjs.com/package/xregexp – Dan 2017-12-29 17:12:10
0
術語「標點符號」相當模糊。 Character
類提供了一個getType()方法,該方法至少映射Unicode規範中定義的character categories的某些部分,因此這可能是開始的最佳位置。
我建議同樣應用「正面」邏輯(例如所有字符和數字)而不是「負面」邏輯(沒有標點符號),因爲測試可能會簡單得多。
3
嘗試的Unicode binary classifications的組合:
String fixed = value.replaceAll("[^\\p{IsAlphabetic}\\p{IsDigit}]", "");
1
的想法是首先去除口音。
public static String onlyASCII(String s) {
// Decompose any ŝ into s and combining-^.
String s2 = Normalizer.normalize(s, Normalizer.Form.NFD);
// Removee all non-ASCII
return s2.replaceAll("[^\\u0000-\\u007E\\pL]", "");
}
對於希臘文和這樣的\\pL
字母。
相關問題
- 1. 從字符串中篩選開始和結束字符
- 2. C++從字符串中刪除標點符號和空格
- 3. 從C中的UTF8字符串中刪除變音符號
- 4. 重載字符串化和utf8標誌
- 5. 基於標點符號化字符串
- 6. 從VB.net中的字符串中刪除所有標點符號
- 7. 篩選基於字符串
- 8. 如何從字符串中刪除標點符號? (Python)
- 9. 如何從Python字符串中去除unicode「標點符號」
- 10. 如何從字符串中去除標點符號?
- 11. 如何從字符串中刪除標點符號C
- 12. 從字符串中刪除所有非字字符(標點符號)
- 13. 從字符串中刪除字符串模式和符號
- 14. 從結果中篩選出的字符串設定
- 15. 從c中的字符串中刪除標點符號和空格?
- 16. 包括標點符號在標點符號後分割字符串
- 17. 忽略字符串中的大小寫,標點符號和空白字符
- 18. Haskell中的Utf8和重載字符串
- 19. utf8字符串和c中的malloc
- 20. 從字符串中的單詞的開頭和結尾刪除標點符號
- 21. 篩選出一個較大字符串中的特定字符串?
- 22. Javascript:如何從字符串末尾去除標點符號
- 23. 字符串轉換爲字符數組,包括標點符號
- 24. 用字長替換字符串中的標點符號在R
- 25. 在PHP中篩選一個字符串
- 26. 將字符串拆分爲單詞和標點符號
- 27. 刪除字符串開頭和結尾的標點符號
- 28. C++分割字符串,空格和標點符號
- 29. 如何用空格和標點符號分割JavaScript字符串?
- 30. UTF8字節到字符串和Winsock GetStream
點,昏迷,報價怎麼樣?他們是否應該過濾? – Pshemo 2013-05-13 16:44:50