我正在尝试使用字符串和字符串替换,例如在应用程序中从字符串中删除坏语言或恶意代码字符。这是有效的,但编译后的输出在输出“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);
}
}
答案 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
。