我想删除以这些字符串结尾的单词
hello_hi
sorry_hr
good_tt
我想删除以 , 结尾的_tt
单词_hr
。怎么做?
is this is good way?
String word = word.replace("_hi", "");
所以你有一个像这样的字符串:
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);
}
}
这样,您将在已处理列表中列出结果:“sorry”和“good_tt”
System.out.println(processed.toString());
得到以下输出:
[sorry, good_tt]
我假设您有一个字符串,其中包含以 for 结尾的令牌,_tt
并且您想从该字符串中删除该单词。
String[] tokens = yourStr.split(" ");
for (String t : tokens) {
if (t.endsWith("_tt") {
yourStr = yourStr.replaceAll(t, "");
}
}
使用正则表达式怎么样?
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 的精神,您可以编写剪辑并加入。为了获得额外的功劳,请将good
列表替换为 StringBuilder 并将您的输出直接写入其中。