2014-04-17 3 views
-1

문자열이 비어 있는지 또는 입력 서비스로 쉬는 서비스가 아닌지 확인할 수 없습니다. 입력 스트림은 구문 분석을 위해 문자열로 변경됩니다. 문자열이 비어 있거나없는 경우 Android : 문자열 변수가 null인지 여부를 확인할 수 없습니다. 문자열 변수가 null인지 아닌지 확인하는 방법은 무엇입니까?

public boolean isNullorEmpty(String string) 
    { 
    if(string !=null || !string.isEmpty() || string.length()>0) 
    return true; 
    else 
    return false; 
} 

확인하기 위해 저를 도와주세요.

+0

android aswell로 'android' 질문 태그를 사용하고 있기 때문에 – Siva

+0

Commons apache의 StringUtils.isBlank()를 사용하십시오 –

답변

1

코드의 현재 문제는 인수로 전달하는 문자열이 null 인 경우 string !=nullfalse으로 평가된다는 것입니다. 따라서 !string.isEmpty()을 평가하면 NullPointerException이됩니다. 한편

당신이하지 null (예 "" 또는 "test") 인 문자열을 전달하면, string != null true로 평가되고 따라서 당신은 true를 반환한다.

따라서 메서드 이름에서 알 수 있듯이 String이 null이거나 비어 있는지 확인해야합니다.

하지만 Android를 사용하고 있으므로 바퀴를 다시 만들지 말고 TextUtils.isEmpty(CharSequence str)을 사용하십시오. 문자열이 null 또는 길이가 0 인 경우

boolean isEmpty = TextUtils.isEmpty(myString); 

true를 반환합니다.

당신이 그것을 구현하는 방법에 대한보고 싶은 경우

:

427  public static boolean isEmpty(CharSequence str) { 
428   if (str == null || str.length() == 0) 
429    return true; 
430   else 
431    return false; 
432  } 
+0

h 문자열을 반환하는 함수는 false를 반환합니다. 내가 코드가 뭐가 잘못 됐는지 모르겠다. – pankaj716

+0

@ pankaj716'null' 문자열을 넘겨 주면, 당신의 메소드는'NullPointerException'을 던진다. 아직 확신이 없다면 http://ideone.com/5HFAx7을 실행하십시오. ''test "'문자열을 말하면,'string! = null'은 true로 평가되므로 true를 반환합니다. 이것은 단순한 논리이며, 논문을 읽고 일부 입력에 대한 귀하의 방법이 무엇인지 살펴보십시오. 내 대답을 좀 더 명확하게 업데이트했습니다. –

+0

문자열이 null인지 아닌지를 확인하면 NullPointerException이 발생하지 않습니다. 또한 null을 전달하면 제공 한 코드에서 예외가 발생하지 않습니다. 두 경우 모두 flase 만 반환합니다. – pankaj716

0

음, 이것은 같은 일반 자바에서 처리 할 수 ​​ :

그리고 그것은처럼 쓸 수 있습니다 :

public boolean isStringEmpty(){ 
    if(str ==null || str.isEmpty() || str.trim().equals("")){ 
     return true; 
    } 
    return false; 
} 
+0

조건의 범위에 세미콜론을 추가 명령문으로 지정하여 문제를 해결했습니다. – pankaj716

관련 문제