【发布时间】:2012-07-19 17:53:13
【问题描述】:
我有一个字符串,它有许多由点 (.) 分隔的段,如下所示:
codes.FIFA.buf.OT.1207.2206.idu
我只想在第二个点之前得到一个子字符串,比如codes.FIFA。
如何在第二个点之前进行子串?
【问题讨论】:
标签: java regex string substring
我有一个字符串,它有许多由点 (.) 分隔的段,如下所示:
codes.FIFA.buf.OT.1207.2206.idu
我只想在第二个点之前得到一个子字符串,比如codes.FIFA。
如何在第二个点之前进行子串?
【问题讨论】:
标签: java regex string substring
这似乎是最简单的解决方案:
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);
当然,如果没有找到点,您可能希望在其中添加错误检查。
【讨论】:
input.substring(0, dot2),否则你会得到codes.FIF。
我只是把它分成三部分,然后再加入前两部分:
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];
变量 firstTwoSubstrings 将包含第二个“.”之前的所有内容。请注意,如果少于两个“.”,这将导致异常。在你的字符串中。
希望这会有所帮助!
【讨论】:
Matcher m = Pattern.compile("^(.*?[.].*?)[.].*")
.matcher("codes.FIFA.buf.OT.1207.2206.idu");
if (m.matches()) {
return m.group(1);
}
【讨论】: