2013-04-29 26 views
0

我有一個字符串中,我被檢查3個條件 // STR = NULL //或者如果str包含速率屬性 //如果STR包含未定義的Java:字符串檢查空和兩個屬性

我已經試過這種方式,它的工作,但請讓我知道,如果這是一種有效的方式來傳遞?

package com; 

import java.util.ArrayList; 
import java.util.List; 

public class Test { 

    public static void main(String args[]) { 


     String str = "{\r\n" + 
       " \"qty\": \"undefined\",\r\n" + 
       " \"dswer\": 0,\r\n" + 
       " \"bag\": {\r\n" + 
       "  \"dm\": \"2\",\r\n" + 
       "  \"rate\": \"---\",\r\n" + 
       "  \"ghy\": \"3013-04-05T00:00:00.000-05:00\",\r\n" + 
       "  \"dee\": \"301304\",\r\n" + 
       "  \"desc\": \"SSAA APR 05 2013 --- CALL\"\r\n" + 
       " }\r\n" + 
       "}"; 



     if(str!=null && str.contains("\"rate\": \"---\"") || str.contains("undefined")) 
     { 
      System.out.println("Invalid"); 
     } 
     else 
     { 
      System.out.println("Valid"); 
     } 

    } 

} 
+0

我已經在你之前提到的自問,解析你的'JSON'。這會減少很多工作,看起來也會更清潔! – SudoRahul 2013-04-29 11:02:50

+3

如果你的字符串是'null',你爲什麼要打印有效? – 2013-04-29 11:03:27

+0

我認爲你需要切換有效和無效 – 2013-04-29 11:40:25

回答

3

您需要更改str != null &&str == null ||

if(str==null || str.contains("\"rate\": \"---\"") || str.contains("undefined")) 

否則,該字符串變得有效時,它是null

+0

如果str爲空,它會不會拋出NPE? – Pawan 2013-04-29 11:06:40

+0

@PreethiJain否:如果它爲空,則由於短路,其餘條件將不會被評估。 – dasblinkenlight 2013-04-29 11:07:31

+0

不,它不會!評估將在那裏進行**短路。 – SudoRahul 2013-04-29 11:07:37

1

嘗試這種方式

if(str!=null 
     && (str.contains("\"rate\": \"---\"") || str.contains("undefined"))) 
{ 
     System.out.println("Invalid"); 
} 
else 
{ 
     System.out.println("Valid"); 
} 

按即使str爲null你的代碼,它仍然會檢查包含

0

試試這個:

if(str==null) 
{ 
    System.out.println("Invalid"); 
} 
else 
{   
    if(str.contains("\"rate\": \"---\"") || str.contains("undefined"))   
    {   
    System.out.println("Invalid");  
    }   
    else   
    {    
    System.out.println("Valid");    
    }  
}