我有字符串"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);
}}
但这是删除所有逗号。
如何写这个来实现上面给出的?
答案 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"