获取未知长度的分隔字符串的子字符串值
Obtaining a substring value for a delimited String of unknown length
给定字符串数据,由 :
和逗号分隔
分隔
String times = 6:10000:first,12:12000:second,18:15000:third
我需要从最后一个逗号分隔列表中获取第三个值,在上面的例子中 15000
或 20000
在下面的情况下
String times = 6:10000:first,12:12000:second,18:15000:third,24:20000:fourth
或 30000
在下面的情况下
String times =
6:10000:first,12:12000:second,18:15000:third,24:20000:fourth,30:30000:fourth
类似于:
public String getLastTimeFromCommaSeparatedList() {
return times.substring(mileages.lastIndexOf(':') + 2);
}
鉴于逗号分隔列表的长度未知,我不清楚如何获得所需的值。
您可以将子字符串与 lastIndexOf 一起使用并像这样拆分:
times.substring(time.lastIndexOf(",")).split(":")[1]
演示
String[] times = {"6:10000:first,12:12000:second,18:15000:third",
"6:10000:first,12:12000:second,18:15000:third,24:20000:fourth",
"6:10000:first,12:12000:second,18:15000:third,24:20000:fourth,30:30000:fourth"
};
for (String time : times) {
System.out.println(
time.substring(time.lastIndexOf(",")).split(":")[1]
);
}
输出
15000
20000
30000
您可以使用 regular expression.
String times = "6:10000:first,12:12000:second,18:15000:third,24:20000:fourth,30:30000:fourth";
java.util.regex.Pattern pttrn = java.util.regex.Pattern.compile("(\d+):[a-z]+$");
java.util.regex.Matcher mtchr = pttrn.matcher(times);
if (mtchr.find()) {
System.out.println(mtchr.group(1));
}
else {
System.out.println("Nothing found.");
}
模式说明
(\d+)
一个或多个数字的字符串。
:
冒号字符
[a-z]+
一个或多个小写字母
$
输入字符串的结尾
因此该模式在输入字符串的末尾查找数字后跟冒号后跟小写字母。它还对数字进行分组。
它适用于您问题中的每个示例字符串。
给定字符串数据,由 :
和逗号分隔
String times = 6:10000:first,12:12000:second,18:15000:third
我需要从最后一个逗号分隔列表中获取第三个值,在上面的例子中 15000
或 20000
在下面的情况下
String times = 6:10000:first,12:12000:second,18:15000:third,24:20000:fourth
或 30000
在下面的情况下
String times =
6:10000:first,12:12000:second,18:15000:third,24:20000:fourth,30:30000:fourth
类似于:
public String getLastTimeFromCommaSeparatedList() {
return times.substring(mileages.lastIndexOf(':') + 2);
}
鉴于逗号分隔列表的长度未知,我不清楚如何获得所需的值。
您可以将子字符串与 lastIndexOf 一起使用并像这样拆分:
times.substring(time.lastIndexOf(",")).split(":")[1]
演示
String[] times = {"6:10000:first,12:12000:second,18:15000:third",
"6:10000:first,12:12000:second,18:15000:third,24:20000:fourth",
"6:10000:first,12:12000:second,18:15000:third,24:20000:fourth,30:30000:fourth"
};
for (String time : times) {
System.out.println(
time.substring(time.lastIndexOf(",")).split(":")[1]
);
}
输出
15000
20000
30000
您可以使用 regular expression.
String times = "6:10000:first,12:12000:second,18:15000:third,24:20000:fourth,30:30000:fourth";
java.util.regex.Pattern pttrn = java.util.regex.Pattern.compile("(\d+):[a-z]+$");
java.util.regex.Matcher mtchr = pttrn.matcher(times);
if (mtchr.find()) {
System.out.println(mtchr.group(1));
}
else {
System.out.println("Nothing found.");
}
模式说明
(\d+)
一个或多个数字的字符串。:
冒号字符[a-z]+
一个或多个小写字母$
输入字符串的结尾
因此该模式在输入字符串的末尾查找数字后跟冒号后跟小写字母。它还对数字进行分组。
它适用于您问题中的每个示例字符串。