如何删除除java中字符串的第一个字符和最后一个字符之外的所有标点符号。我尝试过使用regex和replaceFirst()但没有成功。
例如,!abc3 @将成为abc3,
!! abc3 @@会变成!abc3 @
并且'abc3'仍将保留为'abc3'
这就是我想出的
.replaceFirst("^[^a-zA-Z0-9']", "").replaceFirst("[^a-zA-Z0-9']$", "")
但编译器似乎不接受它。我收到了“无法找到符号”错误。
答案 0 :(得分:0)
使用正则表达式解决方案是(您的解决方案):
String in = "!abc3@";
String out = in.replaceFirst("^[^a-zA-Z0-9']", "").replaceFirst("[^a-zA-Z0-9']$", "");
System.out.println("result: " + out);
非正则表达式的答案会更简单,也可能更快。
String in = "!abc3@";
String out = in;
if( (!in.isEmpty()) && (!Character.isLetterOrDigit(in.charAt(0))) )
out = in.substring(1, in.length());
if( (!out.isEmpty()) && (!Character.isLetterOrDigit(out.charAt(out.length() - 1))) )
out = out.substring(0, out.length() - 1);
System.out.println("result: " + out);