我有一个简单的字符串 Ex。1.0.0.2
我想拆分并只检索字符串的一部分:输出:1.0.0
基本上我想删除第三个.
包含后的所有文本。我尝试使用split()
函数,计算.
and 的出现次数,如果大于 2,则得到indexOf()
第三点 and substring()
。有没有更简单或更快的方法来实现这一目标?也许使用正则表达式?
编辑:我不知道会有多少点。
如果你不确定是否会有三个点——所以你不能使用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);
substring
仅使用 和 来完成此操作既简单又快速lastIndexOf
。我认为代码非常可读:
String str = "1.0.0.1";
String output = str.substring(0, str.lastIndexOf("."));
尽管您可以使用正则表达式实现相同的目的,但我不会打扰,它更冗长,更难理解(至少需要更长的时间),而且对于合理大小的String
.
编辑
如果您不知道您String
将拥有多少个点,您需要一种更复杂的方法,在这种情况下,正则表达式就可以了,+ruakh 的答案可以很好地解决问题。
如果您更喜欢可读性(当然,可读性取决于您对正则表达式的熟悉程度),您可以创建一个辅助方法来计算字符串中某个字符的出现次数,并使用它来决定是否应该砍掉它。
String input = "1.0.0.2";
String output = input.substring(0, input.lastIndexOf("."));