如何删除变量a的此代码输出中的大前导空格

时间:2015-05-30 23:52:43

标签: java string replace

我正在尝试使用字符串和字符串替换,例如在应用程序中从字符串中删除坏语言或恶意代码字符。这是有效的,但编译后的输出在输出“vilification managed ...”之前留下了一个大空间

//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 !@£$%^* 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);

}
}

1 个答案:

答案 0 :(得分:1)

领先的空间有多种原因:

  • 删除咒骂后,它们会被空格包围,但不会删除。您可以使用以下正则表达式捕获您的咒骂:

    \baaaa[^a-zA-Z]?
    

    此正则表达式将捕获单词边界,然后是咒骂(在此处替换为aaaa),然后是可选的非字母数字字符。如果您想在单词中匹配aaaa(例如xaaaa),请删除单词边界\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