String s = aaa-bbb-ccc-ddd-ee-23-xyz;如何在Java中的5分隔符后截断字符串?
我需要将上面的字符串转换为aaa-bbb-ccc-ddd-ee,这意味着我的输出应该只在第五个分隔符之前打印单词。可以帮助解决这个问题吗?
String s = aaa-bbb-ccc-ddd-ee-23-xyz;如何在Java中的5分隔符后截断字符串?
我需要将上面的字符串转换为aaa-bbb-ccc-ddd-ee,这意味着我的输出应该只在第五个分隔符之前打印单词。可以帮助解决这个问题吗?
你可以使用正则表达式:
String s = "aaa-bbb-ccc-ddd-ee-23-xyz";
Pattern p = Pattern.compile("^\\w+\\-\\w+\\-\\w+\\-\\w+\\-\\w+");
Matcher matcher = p.matcher(s);
matcher.find();
System.out.println(matcher.group(0));
输出为aaa-bbb-ccc-ddd-ee
如果您已经不仅仅是字母越多,你可以在\\w
与[^\\-]
其抓住所有的字符,但delemiter更换。
使用Pattern和Matcher是这样的:
String s = "aaa-bbb-ccc-ddd-ee-23-xyz";
Pattern pattern = Pattern.compile("^((.+?-){4}[^-]+).*$");
Matcher matcher = pattern.matcher(s);
if (matcher.find()) {
s = matcher.group(1);
}
* - 搜索所有符号。 ? - 懒惰的工作
(* - ?) - ' - '
{4} - 在结果字符串 ' - ',这与符号结束搜索字符序列的4倍
[^ - ] + - 在搜索字符后没有' - '
。* - 您以后的另一个字符
matcher.group(1) - 返回第一组。这是((。+? - ){4} [^ - ] +)
谷歌搜索yielded http://programming.guide/java/nth-occurrence-in-string.html –
你可以简单地遍历字符串并计算您遇到的分隔符的数量。在计算5个分隔符后,创建一个从第0个索引到第5个分隔符索引的子串 – Flaom
这看起来像是一项家庭作业,请注意详细说明并显示一些代码,以便知道至少您已尝试过某些内容。不要指望人们做你的功课。 –