2012-02-04 25 views

cevap

12
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. \\wa-zA-Z için _ içerdiği halde sizin durumunuz için çalışıyorsa bir "sözcük" karakterini belirtmek için kullanılabilir.

+0

Birincil Java regexp başvurusu: [java.util.regex.Pattern] (https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html) – etech

0

kullanın bu kod:

String s = "Test[]" 
s = s.replaceAll("["); 
s = s.replaceAll("]"); 
+2

O köşeli ayraçları tutmak gibi ... –

0

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 (\\[\\]\\(\\)])

+0

'\ w' kullanma '_' karakteri - soruya göre geçersiz bir karakter. –

+0

Belki de alt çizgi hakkında unuttum? – shift66

+0

@ ÓscarLópez - Java'mda değil, yerelde değil. –

3

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[]()".

+3

"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

+0

tıpkı bir FYI gibi, parantezden kaçmak zorunda değilsiniz. –

+0

@BrianRoach Teşekkürler, düzeltin. –

8

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); 
+5

Snippy olmaya gerek yok. Bu bir Java kütüphanesi, başka bir şey değil, ve kullanışlı bir tane. –

+0

CharMatcher.or() yöntemini nasıl kullandığınız değil, yalnızca bir argüman alır – Stephan

0

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; 
    } 
İlgili konular