2013-03-08 72 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

相關問題