2016-08-13 148 views
1

經過許多其他用戶提出的問題後,這是我第一次遇到無法找到合適答案的問題。Java或Eclipse'空白'在空白空間(?)

但是,這個問題聽起來很奇怪,實際上是: 我有不止一種情況,其中空白是問題的一部分,常見的解決方案是在stackoverflow或其他地方找不到幫助我。

首先我想分割一個字符串在空格上。應該像

String[] str = input.split(" ") 

但無論(" ")也沒有任何的正則表達式像("\\s+")爲我工作。根本不是一個問題。我只是選擇了一個不同的角色來分裂。 :)

現在我試圖通過刪除所有空格來清理字符串。找到共同的解決辦法是

String str = input.replaceAll(" ", "") 

我試圖再次,也(" *", "")使用正則表達式來防止異常,如果字符串inludes沒有空格。再次,這些都沒有爲我工作。

現在我問自己在Java/Eclipse平臺上這是否是一個奇怪的問題,或者我做了一些基本錯誤的事情。從技術上講,我不這麼認爲,因爲上面的所有代碼都可以很好地與任何其他角色進行拆分/清理。

希望能讓自己明白。

問候的Drebin

編輯,以使其更清晰:
我關心只是對「代替」現在。
我的代碼不會接受通過這些由分號分隔的逗號和系列分隔值和名稱的組合,例如:

1,ABC; 2,DEF; 3,GHI

這得到兩次分開,首先用逗號分隔,然後用分號分開。工作正常。

現在我想清除這樣的輸入,通過刪除所有的空格進行,如上所述。因此,如前所述,我使用String.replaceAll(" ", ""),但它不起作用。相反,FIRST空白後的字符串中的所有內容,無論它在哪裏,都會被刪除並丟失。例如。從上面的字符串將更改爲

1,abc;

如果第一個分號後有空格。

希望這部分代碼對你的作品:

import java.util.*; 

public class Main { 

    public static void main(String[] args) { 

    // some info output 

    Scanner scan = new Scanner(System.in); 
    String input; 

    System.out.println("\n wait for input ..."); 
    input = scan.next(); 

    if(input.equals("info")) 
    { 
     // special case for information 
    } 
    else if(input.equals("end")) 
    { 
     scan.close(); 
     System.exit(0); 
    } 
    else 
    { 
     // here is the problem: 
     String input2 = input.replaceAll(" ", ""); 

     System.out.println("DEBUG: "+input2); 

     // further code for cleared Strings 
    } 
    } 
} 

我真的不知道如何使它即使是現在更清晰......

+0

(我喜歡這個名字,官員Drebin :))。因爲'*'匹配0個匹配項,'+'匹配1個或多個匹配項,所以我使用'「+」',但絕對最好的是'「\\ s +」 ' – ppeterka

+0

當您嘗試刪除空格時,我認爲最簡單的方法是在字符串上使用trim(),該字符串從前導和結尾中刪除空白字符。對於代碼工作的所有空間:'input = input.replaceAll(「\\ s」,「」); ' – kolboc

+1

@kolboc只能從字符串的開頭和結尾... OP似乎也需要在中間做那個... – ppeterka

回答

1

Scannernext方法返回下一令牌 - 使用默認的分隔符,這將是一個字,而不是完整產品線。

如果您想獲得完整的產品線,請使用nextLine方法。

+0

呃* facepalm * 這解決了這兩個問題。那麼,是的,我是一個初學者,所以沒關係,非常感謝你:) 從來沒有機會拆分或清理空白,因爲從來沒有在我的輸入。現在我懂了。 –

+1

@FrankDrebin這就是爲什麼你需要發佈樣本輸入和期望輸出[mcve]。問題不在正則表達式中,因爲我們可以在最後一次編輯之後告訴它們。 – user1803551

+0

@ user1803551 Thx,會記住將來的問題。現在我知道我的第一個不夠清楚了。 –