在字符串中删除逗号前的字符

13

我想知道在一个字符串中,如果以“城市,国家”的形式表示,最好的去除逗号之前字符并删除逗号本身的方法是什么,只保留逗号后面的字符。

提前致谢。


1
你尝试过什么吗? - prasanth
正则表达式是你的好朋友。 - ryrich
5个回答

35

所以您想要

成为城市,国家

成为

国家

一个简单的方法是这样的:

public static void main(String[] args) {
    System.out.println("city,country".replaceAll(".*,", ""));
}

虽然这是"贪婪匹配",意思是会改变

  

城市,州,国家

变成

  

国家

在您的情况下,您可能希望它变成

  

州,国家

我无法从您的问题中确定。

如果您想要"非贪婪匹配",请使用

System.out.println("city,state,country".replaceAll(".*?,", ""));

这将输出

州,国家


.*,是什么?谢谢! - Ruchir Baronia
2
顺便提一句,如果他想要 >城市、州、国家 变成 > 州、国家 replaceAll改为replaceFirst System.out.println("city,state,country".replaceFirst(".*,", ""));但是,是的,这个问题不清楚。 - CodeMonkey
@RuchirBaronia 句点代表任何字符,星号表示重复(即任意数量的句点/字符),逗号是普通逗号,因此通配符.* 仅在其前面。 - Vivek Chavda
1
@CodeMonkey:你的说法是不正确的,因为星号与点相结合会使正则表达式变得贪婪。要使其正常工作,你可以使用:"city,state,country".replaceFirst("\w*,", "")。 - Jacob van Lingen
@JacobvanLingen,的确我错了。谢谢你指出来。 - CodeMonkey
GreateAnswer 先生,谢谢您。 - Ganesan J

4

2
字符串是不可变的,因此原始字符串始终保持不变。 - tobias_k

4

请检查这个

String s="city,country";
System.out.println(s.substring(s.lastIndexOf(',')+1));

我发现这比 .replaceAll(".*,", "") 更快。

什么是 '.*,'?谢谢 - Ruchir Baronia
它是正则表达式".*",用作任意数量的字符和逗号","作为分隔符。 - Bassem Reda Zohdy

2
这可以通过结合使用substringindexOf来完成,使用indexOf确定(第一个)逗号的位置,并使用substring相对于该位置提取字符串的一部分。
String s = "city,country";
String s2 = s.substring(s.indexOf(",") + 1);

0
你可以实现一个子字符串,找到逗号前面所有字符的索引,然后你只需要将它们删除即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接