3

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

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

4

3 回答 3

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);
于 2013-02-07T17:08:07.503 回答
3

substring仅使用 和 来完成此操作既简单又快速lastIndexOf。我认为代码非常可读:

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

尽管您可以使用正则表达式实现相同的目的,但我不会打扰,它更冗长,更难理解(至少需要更长的时间),而且对于合理大小的String.

编辑

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

如果您更喜欢可读性(当然,可读性取决于您对正则表达式的熟悉程度),您可以创建一个辅助方法来计算字符串中某个字符的出现次数,并使用它来决定是否应该砍掉它。

于 2013-02-07T17:04:40.787 回答
1
String input = "1.0.0.2";
String output = input.substring(0, input.lastIndexOf("."));
于 2013-02-07T17:07:25.530 回答