如何删除任何字符串末尾的逗号

时间:2015-08-28 04:49:41

标签: java regex string str-replace

我有字符串"a,b,c,d,,,,, "",,,,a,,,,"

我希望这些字符串分别转换为"a,b,c,d"",,,,a"

我正在为此写一个正则表达式。我的java代码看起来像这样

public class TestRegx{
public static void main(String[] arg){
    String text = ",,,a,,,";
    System.out.println("Before " +text);
    text = text.replaceAll("[^a-zA-Z0-9]","");
    System.out.println("After  " +text);
}}

但这是删除所有逗号。

如何写这个来实现上面给出的?

2 个答案:

答案 0 :(得分:9)

使用:

text.replaceAll(",*$", "")

正如@Jonny在评论中所提到的,也可以使用: -

text.replaceAll(",+$", "")

答案 1 :(得分:4)

您的第一个示例最后有一个空格,因此需要匹配[, ]。多次使用相同的正则表达式时,最好先预先编译它,它只需要替换一次,并且只有当至少删除一个字符时才会被删除(+)。

简易版:

text = text.replaceFirst("[, ]+$", "");

测试两个输入的完整代码:

String[] texts = { "a,b,c,d,,,,, ", ",,,,a,,,," };
Pattern p = Pattern.compile("[, ]+$");
for (String text : texts) {
    String text2 = p.matcher(text).replaceFirst("");
    System.out.println("Before \"" + text  + "\"");
    System.out.println("After  \"" + text2 + "\"");
}

输出

Before "a,b,c,d,,,,, "
After  "a,b,c,d"
Before ",,,,a,,,,"
After  ",,,,a"