4

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

代码.FIFA.buf.OT.1207.2206.idu


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

如何子串直到第二个点?

4

5 回答 5

15

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

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);

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

于 2012-07-20T12:45:09.620 回答
4

像这样的东西可以解决问题:

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

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

希望这可以帮助!

于 2012-07-20T12:47:01.450 回答
3

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

String[] split = "codes.FIFA.buf.OT.1207.2206.idu".split("\\.");
System.out.println(split[0] + "." + split[1]);
于 2012-07-20T12:44:44.680 回答
3
 Matcher m = Pattern.compile("^(.*?[.].*?)[.].*")
                    .matcher("codes.FIFA.buf.OT.1207.2206.idu");
 if (m.matches()) {
      return m.group(1);
 }

http://ideone.com/N6m8a

于 2012-07-20T12:50:22.090 回答
2

我只是将它分成三个部分并再次加入前两个部分:

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

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

于 2012-07-20T12:45:12.507 回答