如何在java中的5分隔符后截断字符串?

时间:2017-05-29 07:37:55

标签: java

String s = aaa-bbb-ccc-ddd-ee-23-xyz;

我需要将上面的字符串转换为aaa-bbb-ccc-ddd-ee,这意味着我的输出应该只在第五个分隔符之前打印单词。可以帮助解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

您可以使用正则表达式:

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替换为[^\\-],其中除了删除者之外还会抓取所有字符。

答案 1 :(得分:0)

像这样使用模式和匹配器:

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} [^ - ] +)