2013-03-08 50 views
-3

我想删除的话它与这些字符串如何删除以此词结尾的单词?

hello_hi 
sorry_hr 
good_tt 

我想删除与_tt_hr结束的话结束。怎么做?

 is this is good way? 

     String word = word.replace("_hi", ""); 
+0

是否要保留该单词并删除标记'_hi'和'_hr'? – 2013-03-08 23:48:23

+0

你想删除某处的文字吗?或者实际上你想要的是消除单词的结尾? – emecas 2013-03-08 23:49:31

+0

我想删除这样结束的整个单词。另外我想删除我想保留的令牌。 – user2150249 2013-03-08 23:50:44

回答

2

所以,你有一个字符串,如:

 String str = "hello_hi sorry_hr good_tt"; 

那么你一定要总结这三个规则如何被应用:

1)拆下hello_hi因为它与_hi

结束

2)删除_hr并保留字,对于这种特殊情况,它会保持对不起

3)保持good_tt,因为它有没有* _hi或* _HR形式,但* _TT

然后,最后一个字符串将是 “对不起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] 
+0

没用。仍然打印相同 – user2150249 2013-03-09 02:02:55

+0

你是什么意思?你能澄清吗?我已尽力理解您的问题并准备一个循序渐进的答案,请随时在任何不正确的部分进行编辑。答案是社区维基类,所以你可以编辑它! – emecas 2013-03-09 02:21:04

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列表并直接将输出写入它。

1

我假设你有一个字符串,其中包含你的令牌,结束于例如_tt并且您想要从该字符串中删除该单词。

String[] tokens = yourStr.split(" "); 
for (String t : tokens) { 
    if (t.endsWith("_tt") { 
     yourStr = yourStr.replaceAll(t, ""); 
    } 
} 
+1

这不起作用的正则表达式混淆。 – 2013-03-08 23:58:16

相关问题