Java 从字符串中删除特殊字符

Java 从字符串中删除特殊字符,java,regex,Java,Regex,大家好,我试着从字符串中删除特殊字符和数字,每件事都很好,但是字符“h”已经用前缀和后缀打印出来了,我不知道为什么打印出来了,告诉我我犯了什么错误 String str = "<h1>Hi buddy!!you @ $ did a Great job . <h1>"; String str1 = str.replaceAll("[^\\p{L}\\p{M}]", " "); System.out.println(str1); 但是我有 h Hi buddy

大家好,我试着从字符串中删除特殊字符和数字,每件事都很好,但是字符“h”已经用前缀和后缀打印出来了,我不知道为什么打印出来了,告诉我我犯了什么错误

  String str = "<h1>Hi buddy!!you @ $ did a Great job . <h1>";
  String str1 = str.replaceAll("[^\\p{L}\\p{M}]", " ");
  System.out.println(str1);
但是我有

h Hi buddy  you did a Great job h

两个
h
s来自输入源中的
标记:

<h1>Hi buddy!!you @ $ did a Great job . <h1>
 ^                                       ^
 |                                       |
 + ------------- Here and here ----------+
嗨,伙计!!你做得很好。
^                                       ^
|                                       |
+------这里和这里----------+

如果不想看到它们,请找到标记,并在调用
replaceAll
之前删除它们。一个快速的方法是在一个单独的
replaceAll
调用中应用
regex。它可以用来学习实验,但对于生产来说太脏了。如果需要可靠地执行此操作,请使用HTML解析器删除标记。

这两个
h
来自输入源中的
标记:

<h1>Hi buddy!!you @ $ did a Great job . <h1>
 ^                                       ^
 |                                       |
 + ------------- Here and here ----------+
嗨,伙计!!你做得很好。
^                                       ^
|                                       |
+------这里和这里----------+

如果不想看到它们,请找到标记,并在调用
replaceAll
之前删除它们。一个快速的方法是在一个单独的
replaceAll
调用中应用
regex。它可以用来学习实验,但对于生产来说太脏了。如果需要可靠地执行此操作,请使用HTML解析器删除标记。

如注释中所述,在删除除字母和标记以外的所有内容之前,应使用HTML解析器删除标记

如果您坚持使用regex删除标记,您可以说:

String str1 = str.replaceall("<[^>]*>", "").replaceAll("[^\\p{L}\\p{M}]", " ");
String str1=str.replaceall(“]*>”,“”)。replaceall(“[^\\p{L}\\p{M}]”,“”);

i、 e.删除…之前的标记。

如注释中所述,在删除除字母和标记以外的所有内容之前,应使用HTML解析器删除标记

如果您坚持使用regex删除标记,您可以说:

String str1 = str.replaceall("<[^>]*>", "").replaceAll("[^\\p{L}\\p{M}]", " ");
String str1=str.replaceall(“]*>”,“”)。replaceall(“[^\\p{L}\\p{M}]”,“”);

i、 e.在使用此代码之前,请先删除标签。它会起作用的

     String str = "<h1>Hi buddy!!you @ $ did a Great job . <h1>";       
     String str1 = str.replaceAll("<[^>]+>", "");
     String str2 = str1.replaceAll("[^\\p{L}\\p{M}]", " ");
     System.out.println(str2);
String str=“嗨,伙计!!你@$做得很好。”;
字符串str1=str.replaceAll(“]+>”,“”);
字符串str2=str1.replaceAll(“[^\\p{L}\\p{M}]”,即“”);
系统输出打印项次(str2);

使用此代码。它会起作用的

     String str = "<h1>Hi buddy!!you @ $ did a Great job . <h1>";       
     String str1 = str.replaceAll("<[^>]+>", "");
     String str2 = str1.replaceAll("[^\\p{L}\\p{M}]", " ");
     System.out.println(str2);
String str=“嗨,伙计!!你@$做得很好。”;
字符串str1=str.replaceAll(“]+>”,“”);
字符串str2=str1.replaceAll(“[^\\p{L}\\p{M}]”,即“”);
系统输出打印项次(str2);

如果在一个空格中找到多个连续空格,则此操作将删除,删除标记并删除所有特殊字符

 String str = "<h1>Hi buddy!!you @ $ did a Great job . <h1>";
    //  String str1 = str.replaceAll("[^\\p{L}\\p{M}]", " ");

      String str1 =  str.replaceAll("<[^>]+>", "").replaceAll("[^\\p{L}\\p{M}]", "      
      ").replaceAll("\\s+", " ");

      System.out.println(str1);

如果在一个空格中找到多个连续空格,则此操作将删除,删除标记并删除所有特殊字符

 String str = "<h1>Hi buddy!!you @ $ did a Great job . <h1>";
    //  String str1 = str.replaceAll("[^\\p{L}\\p{M}]", " ");

      String str1 =  str.replaceAll("<[^>]+>", "").replaceAll("[^\\p{L}\\p{M}]", "      
      ").replaceAll("\\s+", " ");

      System.out.println(str1);

试试这个程序,它会有用的

public class StringFunction{
public static void main(String args[])
{
    String str = "<h1>Hi buddy!!you @ $ did a Great job . <h1>";
    System.out.println(str.replaceAll("<[^>]+>", "").replaceAll("[^\\p{L}\\p{M}]", " "));

}
}
公共类StringFunction{
公共静态void main(字符串参数[])
{
String str=“嗨,伙计!!你@$做得很好。”;
System.out.println(str.replaceAll(“]+>”,”).replaceAll(“[^\\p{L}\\p{M}]”,”);
}
}

试试这个程序,它会工作的

public class StringFunction{
public static void main(String args[])
{
    String str = "<h1>Hi buddy!!you @ $ did a Great job . <h1>";
    System.out.println(str.replaceAll("<[^>]+>", "").replaceAll("[^\\p{L}\\p{M}]", " "));

}
}
公共类StringFunction{
公共静态void main(字符串参数[])
{
String str=“嗨,伙计!!你@$做得很好。”;
System.out.println(str.replaceAll(“]+>”,”).replaceAll(“[^\\p{L}\\p{M}]”,”);
}
}

你得到了你想要的东西。您正在删除除字母和标记以外的所有内容。@devnull是的,我正在删除除字母和标记以外的所有内容。请使用HTML解析器除去标记,然后删除标记。如上所述,
h
正在打印,因为是您要求的。你要求保留这些信件,是吗?你得到了你所要求的。您正在删除除字母和标记以外的所有内容。@devnull是的,我正在删除除字母和标记以外的所有内容。请使用HTML解析器除去标记,然后删除标记。如上所述,
h
正在打印,因为是您要求的。您要求保留这些字母,是吗?是否有其他方法可以删除html标记、特殊字符和数字。运算符有任何其他方法可以删除html标记、特殊字符和数字。operator@user3280500
.replaceall(“]*>”,“”)
从字符串中删除标记,即它将删除
等等。第二部分就是你刚才所做的@user3280500
.replaceall(“]*>”,“”)
从字符串中删除标记,即它删除
等等。第二部分就是你刚才所做的!抱歉,第一次使用你的代码我得到了以下输出嗨,伙计!!你@$做得很好。很抱歉,第一次使用你的代码我得到了以下输出嗨,伙计!!你做得很好。