-3

我想删除以这些字符串结尾的单词

hello_hi
sorry_hr
good_tt

我想删除以 , 结尾的_tt单词_hr。怎么做?

     is this is good way?

       String word = word.replace("_hi", "");
4

4 回答 4

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); 
        }
    }

这样,您将在已处理列表中列出结果:“sorry”“good_tt”

    System.out.println(processed.toString());

得到以下输出:

    [sorry, good_tt]
于 2013-03-09T00:29:59.313 回答
1

我假设您有一个字符串,其中包含以 for 结尾的令牌,_tt并且您想从该字符串中删除该单词。

String[] tokens = yourStr.split(" ");
for (String t : tokens) {
   if (t.endsWith("_tt") {
       yourStr = yourStr.replaceAll(t, "");
   }
}
于 2013-03-08T23:56:27.440 回答
0

使用正则表达式怎么样?

于 2013-03-08T23:52:58.830 回答
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 的精神,您可以编写剪辑并加入。为了获得额外的功劳,请将good列表替换为 StringBuilder 并将您的输出直接写入其中。

于 2013-03-08T23:53:55.453 回答