2015-05-30 41 views
-3

我正在試驗字符串和字符串替換,例如在應用程序中從字符串去除不良語言或惡意代碼字符。這是工作,但在編譯時輸出的輸出之前,留下了很大的空間「中傷管理......」我如何刪除變量的代碼輸出中的大領先空間

//import java.util.regex.Pattern; 
class grandaddy { 
public static void main (String [ ] args) { 

//"now that the k's in place where the c used to be" (now it's on) 

String tempinvarate= "marduk"; 
String sminth= "subparticle"; 
String infiltrate= "cosmicwind"; 
tempinvarate=tempinvarate.replace ("k", "c"); 
String a= "piss shit [email protected]£$%^* vilification managed"; 
String b=" by mark scorfield"; 
a= a.replace("piss", ""); 
a= a.replace("shit", ""); 
a= a.replaceAll("[^a-z-A-Z0-9]", " "); 
a=a+b; 
System.out.println(tempinvarate); 
System.out.println(tempinvarate.replace("k", "c")); 
System.out.println(sminth); 
System.out.println(sminth.replace("sub", "sminth")); 
System.out.println(infiltrate); 
System.out.println(infiltrate.replace("cosmic" , "minute")); 
//int n = a.length(); 
//Pattern SPACE = Pattern.compile(" "); 
//String[] arr = SPACE.split(a); 
//String[] splitStr = a.trim().split("\\s+"); 
System.out.println(a); 

} 
} 
+0

'String#trim()' –

+0

非常感謝 - 我在發佈之前嘗試過,但是語法錯誤。 –

回答

1

的主導空間,是多種原因:

  • 當您刪除的粗口,它們被空間包圍,不會被移除。你可以使用下面的正則表達式,而不是捕捉你的咒罵:

    \baaaa[^a-zA-Z]? 
    

    此正則表達式將捕獲一個單詞邊界,其次是咒罵(與aaaa這裏代替),然後一個可選的非字母數字字符。如果您想在單詞(例如xaaaa)內匹配aaaa,請刪除單詞邊界\b

  • 您更換[^a-z-A-Z0-9]將其替換爲空格。你可以用一個空字符串,而不是替代:

    a= a.replaceAll("[^a-z-A-Z0-9]", ""); 
    

    但是,你會發現,現在所有空間被剝離,你會得到vilificationmanaged ...這是很容易讓空間(我也用+到各地工作捕獲和一次刪除一串字符,出於習慣):

    a= a.replaceAll("[^a-z-A-Z0-9 ]+", ""); 
    

這些更改後,字符串A quick brown fox jumps over the aaaa lazy &^&% dog將成爲A quick brown fox jumps over the lazy dog

+0

這看起來像一個繼續發展的綜合方法。非常感謝。 –