正则表达式替换字符串开头和结尾的标点符号

时间:2018-04-20 21:08:26

标签: java

如何删除除java中字符串的第一个字符和最后一个字符之外的所有标点符号。我尝试过使用regex和replaceFirst()但没有成功。

例如,!abc3 @将成为abc3,
!! abc3 @@会变成!abc3 @
并且'abc3'仍将保留为'abc3'

这就是我想出的 .replaceFirst("^[^a-zA-Z0-9']", "").replaceFirst("[^a-zA-Z0-9']$", "")

但编译器似乎不接受它。我收到了“无法找到符号”错误。

1 个答案:

答案 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);