我想从此字符串中删除所有非字母数字字符,以及其他类型的字符串,例如
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;
}
现在的样子,我的文件创建因为并没有删除所有坏字符而中断。
答案 0 :(得分:2)
试试这个
str = str.replaceAll("\\P{Alnum}", "");
答案 1 :(得分:1)
你可以试试这个
str = str.replaceAll("[^a-zA-Z0-9\\s]", "");
答案 2 :(得分:1)
str = str.replaceAll("\\W", "");
答案 3 :(得分: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
答案 4 :(得分:0)
使用:
String str = str.replaceAll("[^A-Za-z0-9]", "");
System.out.println(str);