【问题标题】:How do i remove the large leading space in the output of this code for variable a如何删除此代码输出中变量 a 的大前导空格
【发布时间】:2015-08-13 16:08:22
【问题描述】:

我正在尝试使用字符串和字符串替换,例如在应用程序中从字符串中去除不良语言或恶意代码字符。这是可行的,但是编译时的输出在输出“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);

}
}

【问题讨论】:

    标签: java string replace


    【解决方案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

    【讨论】:

    • 这看起来像是一种继续开发的综合方法。非常感谢。
    猜你喜欢
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 2017-12-18
    • 2022-01-01
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多