0

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

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;
  }

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

4

5 回答 5

2

试试这个

str = str.replaceAll("\\P{Alnum}", "");
于 2013-08-06T11:46:08.067 回答
1

你可以试试这个

  str = str.replaceAll("[^a-zA-Z0-9\\s]", "");
于 2013-08-06T11:48:27.513 回答
1
str = str.replaceAll("\\W", "");
于 2013-08-06T11:50:46.297 回答
1

如果您不想使用另一种方法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());

表明somethingbutnothing132456

于 2013-08-06T11:57:02.447 回答
0

采用:

String str = str.replaceAll("[^A-Za-z0-9]", "");
System.out.println(str);
于 2013-08-06T11:50:33.263 回答