와이즈 비즈가있다
개체와
CharSequence
목적. 나는 가능한
String
와 평등 검사 (대소 문자 구분)에 대해 둘 다 비교하고 싶습니다.
가치. 중첩 된
null
를 사용했습니다.
너무 깨끗하고 최적화되지 않은 진술. 문제는
if
를 호출 할 수 없다는 것입니다
toString()
에서
CharSequence 객체. 평등 점검을 어떻게 수행 할 수 있습니까?
null
- 답변 # 1
- 답변 # 2
복잡한 코드와 중첩 된
if
는 없습니다 '에스. 아래는해야합니다.if(Objects.equals(charSeq,str) || (charSeq !=null && str !=null && charSeq.toString().equalsIgnoreCase(str))) { // todo }
- 답변 # 3
if (charSeq == str || (charSeq != null && str != null && charSeq.toString().equalsIgnoreCase(str))) { // todo }
charSeq == str
둘 다 null 인 경우 처리 (이 경우에만 다른 클래스에 속하고 동일한 객체 참조를 식별 할 수 없으므로이 경우에만 처리) - 답변 # 4
직접
equals()
사용equals()
로 작동하지 않습니다 와이즈 비츠 서브 클래스는 상호 운용이 불가능합니다.
당신은CharSequence
를 사용할 수 있습니다toString()
사이의 다리로 방법 어떤 경우에는 상호 운용 가능한 서브 클래스 (CharSequence
그리고String
예)) 그러나 모든 경우에 해당되는 것은 아닙니다.예 :
StringBuilder
호출toString()
에서 객체는CharBuffer
로 특정 결과를 줄 수 있습니다 버퍼 현재 위치에 의존합니다.일관된 결과를 얻으려면 먼저 전달 된 객체의 유형을 확인한 다음 결과를 비교하는 다른 방법을 선택하지 않았다고 생각합니다.
CharBuffer.toString()
사용toString()
의 다리로 다른 유형을 다르게 처리합니다.브릿지 비교의 경우
StringBuilder/StringBuffer
만 예상한다고 가정합니다. 또는StringBuilder
하위 클래스로 :String
public boolean compareContent(CharSequence charSequence, String string) { if (!(charSequence instanceof StringBuilder || charSequence instanceof String){ // Exception, logging, more customized comparison or return false } return charSequence.toString().equalsIgnoreCase(string)); }
관련 자료
- 문자열이 사전 파이썬의 값에 있는지 확인하는 방법
- awk - 문자열을 문자열로 분할하고 날짜가 1 일보다 오래된 지 확인합니다
- c - 입력 문자열이 괄호가 완성되었는지 확인
- python - 문자열 열거에 문자열이 있는지 확인하는 방법은 무엇입니까?
- python - 다른 데이터 프레임에 문자열 값이 없는지 확인하는 방법은 무엇입니까?
- sql - 숫자가 문자열 범위에 있는지 확인
- python - 문자열이 전체 목록에 있는지 확인하는 방법은 무엇입니까?
- regex - 자바 스크립트 - 두 특수 문자 사이에있는 문자열 부분 추출
- python 3.x - 문자열에 연산자 만 포함되어 있는지 어떻게 확인할 수 있습니까?
- python - BeautifulSoup을 사용하여 동적으로 생성 된 페이지에 문자열이 있는지 확인
- python - 정규식을 사용하여 문자열과 줄 바꾸기 문자 (/ n) 사이의 텍스트 추출
- java - for 루프에서 문자열 이름을 호출하여 수백 개의 문자열 배열을 확인할 수 있습니까?
- isalpha를 사용하여 C ++의 문자열에 특수 문자가 있는지 어떻게 확인합니까?
- 파이썬에서 여러 줄 문자열의 줄 사이에 "\ n"제거
- java - 목록의 모든 항목에 문자열의 문자가 포함되어 있는지 확인하는 방법
- repeat - R의 그룹간에 행의 값이 반복되는지 확인하려면
- Java의 정규식을 사용하여 문자열이 두 자리 숫자로 끝나는 지 확인하십시오
- 정규식 - 문자열이 비어 있지 않거나 비어 있지 않고 ""문자가 포함되어 있지 않은지 확인하는 방법은 무엇입니까?
- python - 변수가 문자열인지 확인
- r - OR을 사용하여 정규식에서 문자열 조작을 위해 여러 일치 항목 중에서 선택하는 방법
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- JavaScript 변수를 HTML div에 '출력'하는 방법
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- python - 화면에서 찾은 요소를 찾을 수없는 경우 셀레늄
귀하의 질문을 이해하는 한 다음과 같습니다. 두 개의 객체가 있으며 동일한 지 확인하고 싶습니다.
우리가 원하는 것은
불행히도 이것은 작동하지 않습니다. charsequence가 null이면 NullPointerException이 발생합니다. 따라서 charsequence가 null인지 확인하고 거기서 시작해야합니다.String.equalsIgnoreCase()
를 사용하는 것입니다 . 말 그대로 당신이 원하는 것입니다. CharSequence 객체가 null이 아닌 경우CharSequence.toString()
때문에 매우 쉽습니다. 똑같은 순서로 똑같은 문자를 가진 문자열을 반환합니다.모든 상자를 체크합니다 :
대소 문자를 구분하지 않습니다
널값을 처리합니다
정확하고 읽기 쉬운(중첩 된 if 없음)