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