我有一个简单的字符串 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("."));