如何在Java中将字符串子串到第二个点(。)?

Posted

技术标签:

【中文标题】如何在Java中将字符串子串到第二个点(。)?【英文标题】:How to substring a string to the second dot (.) in Java? 【发布时间】:2012-07-19 17:53:13 【问题描述】:

我有一个字符串,它有许多由点 (.) 分隔的段,如下所示:

codes.FIFA.buf.OT.1207.2206.idu

我只想在第二个点之前得到一个子字符串,比如codes.FIFA

如何在第二个点之前进行子串?

【问题讨论】:

【参考方案1】:

这似乎是最简单的解决方案:

String[] split = "codes.FIFA.buf.OT.1207.2206.idu".split("\\.");
System.out.println(split[0] + "." + split[1]);

【讨论】:

【参考方案2】:

只要找到第一个点,然后从那里找到第二个:

String input = "codes.FIFA.buf.OT.1207.2206.idu";
int dot1 = input.indexOf(".");
int dot2 = input.indexOf(".", dot1 + 1);
String substr = input.substring(0, dot2);

当然,如果没有找到点,您可能希望在其中添加错误检查。

【讨论】:

你应该使用input.substring(0, dot2),否则你会得到codes.FIF 你应该添加一些检查是否存在至少两个点,否则你会从 indexOf 中得到 -1 并且 substring 会抛出非法参数 @guido:我确实在回答中指定了这一点。【参考方案3】:

我只是把它分成三部分,然后再加入前两部分:

String[] parts = string.split("\\.", 3);
String front = parts[0]+"."+parts[1];
String back = parts[2];

这可能需要一些错误检查,如果它可以少于两个点,或者以一个点开头,等等。

【讨论】:

【参考方案4】:

这样的事情可以解决问题:

String[] yourArray = yourDotString.split(".");
String firstTwoSubstrings = yourArray[0] + "." + yourArray[1];

变量 firstTwoSubstrings 将包含第二个“.”之前的所有内容。请注意,如果少于两个“.”,这将导致异常。在你的字符串中。

希望这会有所帮助!

【讨论】:

【参考方案5】:
 Matcher m = Pattern.compile("^(.*?[.].*?)[.].*")
                    .matcher("codes.FIFA.buf.OT.1207.2206.idu");
 if (m.matches()) 
      return m.group(1);
 

http://ideone.com/N6m8a

【讨论】:

如果我只想从这个字符串返回“buf”,代码是什么?

以上是关于如何在Java中将字符串子串到第二个点(。)?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 extern NSString 将字符串值从第一个视图移动到第二个视图控制器

51Nod - 1183 编辑距离

如何在 C++ 中将一点移向另一点?

我想使用字符串中的正则表达式函数在第二个点(。)之前提取文本,例如:

字符数组中将空格移到最后java实现

java中字符串如何去除最后一个字符