String s = aaa-bbb-ccc-ddd-ee-23-xyz;
我需要将上面的字符串转换为aaa-bbb-ccc-ddd-ee,这意味着我的输出应该只在第五个分隔符之前打印单词。可以帮助解决这个问题吗?
答案 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} [^ - ] +)