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

在Java中,如何将字符串子串到第二个点(.)上?,java,regex,string,substring,Java,Regex,String,Substring,我有一个字符串,它有许多段由一个点()分隔,如下所示: 代码.FIFA.buf.OT.1207.2206.idu 我只想在第二个点之前得到一个子串,比如codes.FIFA 如何将子串一直拖到第二个点?这似乎是最简单的解决方案: String[] split = "codes.FIFA.buf.OT.1207.2206.idu".split("\\."); System.out.println(split[0] + "." + split[1]); 只要找到第一个点,然后从那里找到第二个点:

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

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


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


如何将子串一直拖到第二个点?

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

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

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

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

当然,如果找不到点,您可能需要在其中添加错误检查。

我将其分为三部分,然后再将前两部分连接起来:

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

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

类似的方法可以实现这一点:

String[] yourArray = yourDotString.split(".");
String firstTwoSubstrings = yourArray[0] + "." + yourArray[1];
变量firstTwoSubstring将包含第二个“.”之前的所有内容。请注意,如果字符串中少于两个“.”,这将导致异常

希望这有帮助

 Matcher m = Pattern.compile("^(.*?[.].*?)[.].*")
                    .matcher("codes.FIFA.buf.OT.1207.2206.idu");
 if (m.matches()) {
      return m.group(1);
 }

您应该使用
input.substring(0,dot2)
,否则您将得到
code.FIF
。您还应该添加一些检查,检查是否存在至少两个点,否则您将从indexOf中得到-1,子字符串将抛出illegalargument@guido:我确实在回答中指定了这个。如果我只想要“buf”,代码是什么作为这个字符串的回报?