Java'daki bir dizeden geçersiz karakterleri nasıl kaldıracağımı bilmiyorum. Sayı, harf veya() [] olmayan tüm karakterleri kaldırmaya çalışıyorum. Bunu nasıl yapabilirim?Bir dizeden geçersiz karakterler nasıl kaldırılır?
Teşekkür
Java'daki bir dizeden geçersiz karakterleri nasıl kaldıracağımı bilmiyorum. Sayı, harf veya() [] olmayan tüm karakterleri kaldırmaya çalışıyorum. Bunu nasıl yapabilirim?Bir dizeden geçersiz karakterler nasıl kaldırılır?
Teşekkür
String foo = "this is a thing with & in it";
foo = foo.replaceAll("[^A-Za-z0-9()\\[\\]]", "");
javadocs arkadaşınız vardır. Düzenli ifadeler de arkadaşın.
Düzenleme: siaD olmanın bu sadece Latin alfabesi içindir Yani
; buna göre ayarlayabilirsiniz. \\w
a-zA-Z
için _
içerdiği halde sizin durumunuz için çalışıyorsa bir "sözcük" karakterini belirtmek için kullanılabilir.
kullanın bu kod:
String s = "Test[]"
s = s.replaceAll("[");
s = s.replaceAll("]");
O köşeli ayraçları tutmak gibi ... –
myString.replaceAll("[^\\w\\[\\]\\(\\)]", "");
replaceAll yöntemi ilk parametre olarak bir düzenli ifade alır ve dize tüm eşleşmeleri değiştirir. Bu regex haneli, mektup ya da alt çizgi (\\w
) olmayan tüm karakterleri ile eşleşen ve (\\[\\]\\(\\)]
)
'\ w' kullanma '_' karakteri - soruya göre geçersiz bir karakter. –
Belki de alt çizgi hakkında unuttum? – shift66
@ ÓscarLópez - Java'mda değil, yerelde değil. –
bu deneyin ihtiyaç parantezi:
String s = "123abc&^%[]()";
s = s.replaceAll("[^A-Za-z0-9()\\[\\]]", "");
System.out.println(s);
yukarıda bırakarak örnek dize karakterleri "&^%"
kaldıracak Sadece s
sadece "123abc[]()"
.
"sayılar", "harfler" ve benzerleri tanımınıza bağlı olduğunu düşünüyor. Straße'nin "Strae" olarak değiştirilmesini kesinlikle beklemiyordum. Hüzünlü bir "naif" olduğunu söyleyebilirim .. Üzgünüm "nave" çözümü;) – Voo
tıpkı bir FYI gibi, parantezden kaçmak zorunda değilsiniz. –
@BrianRoach Teşekkürler, düzeltin. –
regexes daha etkilidir (ve daha okunabilir) hemen hemen kesinlikle Guava kullanarak ve:
CharMatcher desired = CharMatcher.JAVA_DIGIT
.or(CharMatcher.JAVA_LETTER)
.or(CharMatcher.anyOf("()[]"))
.precomputed(); // optional, may improve performance, YMMV
return desired.retainFrom(string);
Snippy olmaya gerek yok. Bu bir Java kütüphanesi, başka bir şey değil, ve kullanışlı bir tane. –
CharMatcher.or() yöntemini nasıl kullandığınız değil, yalnızca bir argüman alır – Stephan
Sen Dizi/Url veya kullanıcı tarafında aldığım sahip herhangi isteği parametrelerinden özel karakterleri kaldırabilir
public static String removeSpecialCharacters(String inputString){
final String[] metaCharacters = {"../","\\..","\\~","~/","~"};
String outputString="";
for (int i = 0 ; i < metaCharacters.length ; i++){
if(inputString.contains(metaCharacters[i])){
outputString = inputString.replace(metaCharacters[i],"");
inputString = outputString;
}else{
outputString = inputString;
}
}
return outputString;
}
Birincil Java regexp başvurusu: [java.util.regex.Pattern] (https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html) – etech