使用Regex和indexOf拆分字符串

时间:2013-02-07 17:01:07

标签: java string split substring indexof

我有一个简单的字符串Ex。 1.0.0.2我想分割和检索字符串的一部分: 输出:1.0.0基本上我想在包含第三个.之后删除所有文本。我尝试使用split()函数,计算.的出现次数,如果大于2,则获得indexOf()第三个点和substring()。是否有更简单或更快的方法来实现这一目标?也许使用 regEx

编辑: 我不知道会有多少点。

3 个答案:

答案 0 :(得分:4)

如果您不确定是否会有正好三个点 - 那么您无法使用lastIndexOf() - 那么这里是一个基于正则表达式的解决方案:

final Matcher m = Pattern.compile("^[^.]*(?:[.][^.]*){0,2}").matcher(input);
m.find(); // guaranteed to be true for this regex
final String output = m.group(0);

答案 1 :(得分:3)

仅使用substringlastIndexOf执行此操作非常简单快捷。我认为代码非常易读:

String str = "1.0.0.1";
String output = str.substring(0, str.lastIndexOf("."));

虽然你可以用正则表达式来实现同样的目标,但我不会打扰它,它更冗长,更难理解(至少需要你一段时间),这对于一个合理的大小{{1 }}

修改

如果你不知道你的String会有多少点,你需要一个更复杂的方法,在这种情况下,一个正则表达式会很好,+ ruakh的回答很好地解决了这个问题。

如果您更喜欢可读性(当然,可读性取决于您对正则表达式的限制),您可以创建一个辅助方法来计算字符串中字符的出现次数,并使用它来决定是否应该将其删除或不。

答案 2 :(得分:1)

String input = "1.0.0.2";
String output = input.substring(0, input.lastIndexOf("."));