Java'daki Unicode Basic Dildeual Düzlem'in dışındaki karakterleri (bunları kaldırmak amacıyla) nasıl eşleştirebilirim?Temel Çok Dilli Düzlem'in dışındaki Java regex eşleşme karakterleri
15
A
cevap
19
olmayan tüm BMP karakterleri kaldırmak için aşağıdaki çalışması gerekir:
String sanitizedString = inputString.replaceAll("[^\u0000-\uFFFF]", "");
3
BMP'nin dışındaki belirli karakterleri veya karakterleri mi arıyorsunuz?
eski, bir dize daha yüksek uçaklardan kod noktalarını içeren oluşturmak için bir StringBuilder
kullanabilir ve regex beklendiği gibi çalışır:
String test = new StringBuilder().append("test").appendCodePoint(0x10300).append("test").toString();
Pattern regex = Pattern.compile(new StringBuilder().appendCodePoint(0x10300).toString());
Matcher matcher = regex.matcher(test);
matcher.find();
System.out.println(matcher.start());
Eğer tüm olmayan kaldırmak için arıyorsanız bir dizeden -BMP karakterler, sonra regex yerine doğrudan StringBuilder
kullanmak:
StringBuilder sb = new StringBuilder(test.length());
for (int ii = 0 ; ii < test.length() ;)
{
int codePoint = test.codePointAt(ii);
if (codePoint > 0xFFFF)
{
ii += Character.charCount(codePoint);
}
else
{
sb.appendCodePoint(codePoint);
ii++;
}
}
İlgili konular
- 1. Scala RegEx eşleşme başarısız, Java bir
- 2. İçindekilerle eşleşme php regex
- 3. Çok Dilli Jade şablonları?
- 4. Tekdüzenli tokenlere Regex kullanarak çok dilli dizeyi bölme
- 5. regex - alternatif karakterlerin eşleşme modeli
- 6. Regex Sıralı Karakterleri Reddet
- 7. Drupal çok dilli
- 8. POD çok dilli dokümanlar
- 9. Çok dilli flask uygulaması
- 10. Django unicode Çok dilli
- 11. Regex özel karakterleri kaldırın
- 12. JavaScript regex beyaz karakterleri
- 13. regex arasındaki karakterleri bulmak ""
- 14. php regex dizesinden birden çok eşleşme ayıklamak için
- 15. Java, sayısal olmayan karakterleri x
- 16. Çok temel -
- 17. Çok dilli veriler nasıl saklanır?
- 18. Reaksiyon yönlendiricisinde çok dilli destek
- 19. Üçlü olmayan karakterleri değiştirmek için Java regex negatif görünümü
- 20. RegEx sonuçlarına karakterleri nasıl eklerim?
- 21. mysql regex utf-8 karakterleri
- 22. Java Regex lookahead çok zaman alır
- 23. Her "eşleşme" (Ruby regex) boyunca yineleme (Ruby regex)
- 24. Regex - Bir HTML kodundaki eşleşme özniteliği
- 25. Java String, karakterleri
- 26. Bir düzlemin 3 boyutlu dönüşleri
- 27. ggplot2 birden çok katmanla eşleşme
- 28. Ruby regex: boşluk karakterleri olmayan sözcük olmayan karakterleri değiştir
- 29. Çok dilli bir site için CMS'yi bağlar
- 30. Çok dilli site için PHP date() çevirme
Bunu gerçekten test ettiniz mi? Karakter aralığınız BMP olmayan kod noktaları oluşturmak için kullanılan aralık aralığını içerdiğinden. – Anon
@Anon: Kendi yanıtınızda belirttiğiniz gibi, normal ifadeler kod birimi düzeyinde değil, kod noktaları düzeyinde değerlendirilir; – axtavt
Evet, bu BMP olmayan karakterlerle test edildi. –