2014-02-26 198 views
1

我有一個字符串與多個空間是不必要的,我想刪除該空間,需要一個良好的結構輸出。我需要在單詞之間有一個空格。 INPUT:有數量後空格數,之前的第一句話。5新的生產線,與@line有一些空間[java]刪除空間空間

1 





     An item one 



     area city, country 
     type of area 
     time of event 1 

2 





     An item one 



     area city, country 
     type of area 
     time of event 1 

3 ... idem 

`

,我想什麼是結構只喜歡:

An item one; area city, country; type of area; time of event 1;

An item two; area city, country; type of area; time of event 2; . . .

我試着用 st.replaceAll("\n", "") 但它不是我期待.. 需要幫助..

更新部分解決和已經存在的另一個問題

  1. 問題1

     s = s.replaceAll("\\n+", " "); 
         s = s.trim(); 
         s = s.replaceAll(" \\s+", ";"); 
    

    輸出:

1 An item one; area city, country; type of area; time of event 1 2 An item one; area;city, country; type of area; time of event 1

而且現在第二個問題是存在的,例如當有一個詞

area city,結果給area;city,所以幫我這個存在超過1個空間...

+1

會推薦使用分隔符 – KRUKUSA

+0

失敗,您的結果不符合您的原始問題。看到我的答案正確的方式。 –

+0

如果單詞之間有多個空格怎麼辦?修剪不會刪除。修剪只從右端和左端刪除 – tgkprog

回答

1
public static void main(String[] args) { 
    String s= "abc  def agig"; 
    s=s.trim(); // thanks to Christian for the suggestion. 
    s= s.replaceAll("\\s+", " "); 
    System.out.println(s); 

    O/P : abc def agig 
+0

我肯定會說這個空間不是最後的或開始的。 –

+0

如果downvoters會友好地留下評論,我可以學習更多.. :) – TheLostMind

+0

@WhoAmI你試過了嗎? – Christian

0

使用此爲您所需的輸出:

輸入:

An item one 



area city, country 
type of area 
time of event 1 
下面

用途:

st = st.replaceAll("\\r?\\n+",";");

輸出:

An item one;area city, country;type of area;time of event 1 
+0

結果'1; ; ; ; ; ;項目一; ; ; ;地區城市,國家;面積類型;事件1的時間; ' – enhaka

+0

@ user3145749你的輸入字符串是什麼? – Rahul

+0

@ user3145749你用過正則表達式中的+作爲'\\ r?\\ n +'? – Rahul

0

目標是從多條線路,以分號分隔文本,然後用多餘的空格去掉去?

也許你需要使用多行代碼。首先擺脫額外的新線路,然後多餘的空格,然後放入半冒號和連結線

所以先用單替換所有雙新行:

st = st.replace("\r", "\n"); // just in case you have windows new line 
st = st.replace("\n\n",); // optional, else string tokeizer will by default iggnore consecutive seperators 

現在字符串標記,關於新的突破線

logger.info("Initial :[[[" + st + "]]]"); 
StringTokenizer st1 = new StringTokenizer (st, "\n"); 
StringBuilder sb = new StringBuilder(); //the final string, will be built here 
boolean first = true; 
while(st1.hasMoreTokens(){ 
    s = st1.nextToken(); 
    s = s.trim(); 
    s = s.replace(" ", " ");//two spaces with one 
    if(frist){ 
     first = false; 
    }else{ 
     sb.append(";"); 
    } 
    sb.append(s); 
} 
logger.info("Final :[[[" + sb + "]]]"); 

  1. 這不是編譯代碼,只是WR這裏OTE它清晰

  2. ,如果你不使用記錄你應該,或者使用的System.out.println ...

0
yourString = yourString.replaceAll("\\s+", " "); 

例如

System.out.println("abcd   ipsum   dolor \n sit.".replaceAll("\\s+", " ")); 

輸出

abcd ipsum dolor sit.