簡體   English   中英

在Java中檢查空字符串

[英]Checking empty string in Java

我不知道下面的代碼有什么問題....我從文本框中獲取輸入並將輸入放入字符串中。 如果文本框為空,它將返回一個空字符串。 在下面的代碼中

   String[] str = new String[9]; 
   for(int i=0;i<9;i++){
       if(str[i].equals("")){
          System.out.println("set " + cmds[i] + " " + str[i]);
          WriteThread.sendCommand("set " + cmds[i] + " " + str[i] + "\n", false);
       }
    }

在上面的代碼str[i]存儲文本框的輸入文本,我試圖檢查數組的任何元素是否為空。 我也嘗試過str[i] == ""str[i] == null但沒有運氣。 如果我正在打印字符串str[i] ,則 if 塊中的語句不顯示任何內容,這意味着它是空的。

我做錯了什么嗎?

你可以試試:

if (str[i] == null || str[i].trim().equals("")){
// your code
}

您可以使用Apache Commons Lang檢查字符串:

if (StringUtils.isBlank(str[i]) {
    ...
}

StringUtils.isBlank正在檢查字符串是否為null或為空(即當所有空白字符被刪除時它是否等於"" )。

我會推薦

if (str[i] == null || str[i].trim().length==0){
// your code
}

或 Java 6 以上

if (str[i] == null || str[i].trim().isEmpty()){
// your code
}

而不是使用 equals() 因為 equals() 方法測試空字符串是過度的

上面的代碼僅在字符串為空時才執行,這是期望的行為嗎? 同樣在循環之前將 str 聲明為 new 幾乎可以保證它是空的。

如果您嘗試從文本框中分配值,則需要在循環之前的某處進行這些分配。

我實際上試圖運行你的代碼片段並在你的條件下得到一個 NullPointerException

str[i].equals("")

str[i] == null 對我有用。 您確定您在問題中輸入了正確的代碼。 測試您剛剛初始化的空數組的空字符串似乎很奇怪。

一個非常簡單的解決方案可以是這樣的。

if(str[] != null && !str[].equals(""))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM