我有一个简单的字符串Ex。 1.0.0.2
我想分割和检索字符串的一部分:
输出:1.0.0
基本上我想在包含第三个.
之后删除所有文本。我尝试使用split()
函数,计算.
的出现次数,如果大于2,则获得indexOf()
第三个点和substring()
。是否有更简单或更快的方法来实现这一目标?也许使用 regEx ?
编辑: 我不知道会有多少点。
答案 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)
仅使用substring
和lastIndexOf
执行此操作非常简单快捷。我认为代码非常易读:
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("."));