我想删除以这些字符串结尾的单词
hello_hi
sorry_hr
good_tt
我想删除以_tt
,_hr
结尾的字词。怎么做?
is this is good way?
String word = word.replace("_hi", "");
答案 0 :(得分:2)
所以你有一个像:
这样的字符串 String str = "hello_hi sorry_hr good_tt";
然后在要应用的这三个规则中总结了您想要的内容:
1)删除hello_hi,因为它以_hi
结尾2)删除_hr并保留这个词,对于这个特殊情况,它会留下遗憾
3)保持good_tt,因为它没有* _hi或* _hr形式,但是* _tt
然后,最后一个字符串将是“sorry good_tt”
我们这样做
String[] strings = str.split(" ");
ArrayList processed = new ArrayList();
for (String token : strings) {
if (token.endsWith("_hr")){ //rule 2
processed.add(token.replace("_hr", ""));
} else if (token.endsWith("_hi")) { //rule 1
continue;
} else { //any other case, rule 3
processed.add(token);
}
}
这样,您将在处理后列出结果:“抱歉”和“good_tt”
System.out.println(processed.toString());
获得以下输出:
[sorry, good_tt]
答案 1 :(得分:1)
我假设您有一个包含您的令牌的字符串,该令牌以例如_tt
并且您想从该字符串中删除该单词。
String[] tokens = yourStr.split(" ");
for (String t : tokens) {
if (t.endsWith("_tt") {
yourStr = yourStr.replaceAll(t, "");
}
}
答案 2 :(得分:0)
如何使用regular expressions?
答案 3 :(得分:0)
String[] tokens = str.split(" ");
List<String> good = Lists.newArrayList();
for (String token : tokens) {
if (token.endsWith("_hr") || token.endsWith("_tt")) continue;
good.add(clip_end(token));
}
join(good);
String clip_end(String str)
应该关闭_hi。它只是对indexOf和substring的简单调用。
String join(List<String> strs)
只是与空格连接。
本着SO的精神,你可以写剪辑和加入。额外的功劳,用StringBuilder替换good
列表并直接将输出写入其中。