Java子字符串方法:如何删除所有非字母数字字符?

Java子字符串方法:如何删除所有非字母数字字符?,java,substring,Java,Substring,我想从这个字符串中删除所有非字母数字字符,以及其他类型的字符串,比如这个字符串 Unable_to_locate_element_{"method""link_text","selector""ikljbhfvdesiofsdjkl"} 因此,我可以使用此字符串在以下代码中为屏幕截图生成名称: private String generateRandomFilename(Throwable arg0) { Calendar c = Calendar.getInstance()

我想从这个字符串中删除所有非字母数字字符,以及其他类型的字符串,比如这个字符串

Unable_to_locate_element_{"method""link_text","selector""ikljbhfvdesiofsdjkl"}
因此,我可以使用此字符串在以下代码中为屏幕截图生成名称:

    private String generateRandomFilename(Throwable arg0) {
      Calendar c = Calendar.getInstance();

      String filename = arg0.getMessage();
      int i = filename.indexOf('\n');
      filename = filename.substring(0, i).replaceAll("\\s", "_").replaceAll(":", "") + ".jpg";
      filename = "" + c.get(Calendar.YEAR) + 
          "-" + c.get(Calendar.MONTH) + 
          "-" + c.get(Calendar.DAY_OF_MONTH) +
          "-" + c.get(Calendar.HOUR_OF_DAY) +
          "-" + c.get(Calendar.MINUTE) +
          "-" + c.get(Calendar.SECOND) +
          "-" + filename;

      return filename;
  }
现在的情况是,我的文件创建中断,因为并不是所有坏字符都被删除。

试试这个

str = str.replaceAll("\\P{Alnum}", "");
试试这个

str = str.replaceAll("\\P{Alnum}", "");
你可以试试这个

  str = str.replaceAll("[^a-zA-Z0-9\\s]", "");
你可以试试这个

  str = str.replaceAll("[^a-zA-Z0-9\\s]", "");
使用:

使用:


如果您不想使用
regex
,另一种方法是:

    String str = "something : but / nothing@*/132456+";
    StringBuilder sb = new StringBuilder();        
    for (int i = 0; i < str.length(); i++) {
        if(Character.isLetterOrDigit(str.charAt(i))){
            sb.append(str.charAt(i));
        }
    }
    System.out.println(sb.toString());
String str=“something:but/nothing@*/132456+”;
StringBuilder sb=新的StringBuilder();
对于(int i=0;i

如果您不想使用
regex
,它会以另一种方式显示
某物而非某物132456

    String str = "something : but / nothing@*/132456+";
    StringBuilder sb = new StringBuilder();        
    for (int i = 0; i < str.length(); i++) {
        if(Character.isLetterOrDigit(str.charAt(i))){
            sb.append(str.charAt(i));
        }
    }
    System.out.println(sb.toString());
String str=“something:but/nothing@*/132456+”;
StringBuilder sb=新的StringBuilder();
对于(int i=0;i
它显示的是
某物而非某物132456