이 게시물은 문자열이 Java에서 유효한 숫자인지 여부를 결정하는 여러 가지 방법을 탐구합니다. 솔루션은 문자열에 유니코드 숫자만 포함되어 있는지 확인하고 양수 또는 음수 선행 기호 또는 소수점을 허용하지 않습니다. null 문자열 또는 빈 문자열은 false를 반환해야 합니다.
Java는 이 간단한 작업에 대한 표준 방법을 제공하지 않았습니다. 그럼에도 불구하고 Java에서 주어진 문자열이 숫자인지 확인하는 몇 가지 방법이 있습니다.
1. 커스텀 방식
간단한 해결책은 이 간단한 작업에 대한 자체 유틸리티 메서드를 작성하는 것입니다. 아이디어는 문자열 문자를 반복하고 다음을 사용하여 각 문자가 숫자인지 확인하는 것입니다. Character.isDigit(char). 이것은 아래에 설명되어 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | classMain { publicstaticboolean isNumeric(Strings) { if(s==null|| s.equals("")){ returnfalse; } for (inti=0;i<s.length();i++) { charc= s.charAt(i); if (c<'0'||c> '9'){ returnfalse; } } returntrue; } publicstaticvoid main(String[]args) { Strings="100"; System.out.println("IsNumeric: "+ isNumeric(s)); } } |
다운로드 코드 실행
결과:
IsNumeric: true
2. 람다 표현식 사용
Java 8부터는 람다 표현식을 사용하여 효율적으로 수행할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | classMain { publicstaticboolean isNumeric(Strings) { if(s==null|| s.equals("")){ returnfalse; } return s.chars().allMatch(Character::isDigit); } publicstaticvoid main(String[]args) { Strings="100"; System.out.println("IsNumeric: "+ isNumeric(s)); } } |
다운로드 코드 실행
결과:
IsNumeric: true
3. 정규 표현식 사용
정규 표현식을 사용할 수 있습니다. "[0-9]+" 또는 "\\d+" 문자열이 숫자인지 확인합니다. 이것은 다음을 사용하여 수행할 수 있습니다. matches() 방법 String 이 문자열이 주어진 정규식과 일치하는지 여부를 알려주는 클래스입니다.
classMain { publicstaticvoid main(String[]args) { Strings="100"; boolean isNumeric=(s!=null&& s.matches("[0-9]+")); System.out.println("IsNumeric: "+isNumeric); } } |
다운로드 코드 실행
결과:
IsNumeric: true
정규식이 자주 호출되는 경우 성능 향상을 위해 먼저 컴파일해야 합니다.
importjava.util.regex.Pattern; class Main { privatestaticPatternp =Pattern.compile("[0-9]+"); public staticvoidmain(String[]args) { Strings="100"; booleanisNumeric=(s!= null&& p.matcher(s).find()); System.out.println("IsNumeric: "+ isNumeric); } } |
다운로드 코드 실행
결과:
IsNumeric: true
4. Apache Commons Lang 사용하기
숫자 문자열을 확인하는 몇 가지 방법을 제공하는 Apache Commons Lang 라이브러리를 사용할 수도 있습니다.
1. StringUtils#isNumeric()
2. NumberUtils#isCreatable()
3. NumberUtils#isNumber()
importorg.apache.commons.lang3.StringUtils; classMain { publicstaticvoidmain(String[]args) { Strings="100"; System.out.println("IsNumeric: "+ StringUtils.isNumeric(s)); } } |
코드 다운로드
5. 사용 Wrapper 클래스 내장 메소드
아이디어는 다음과 같이 문자열을 구문 분석하는 것입니다. Integer.parseInt() 또는 Long.parseLong(), 생성하는 NumberFormatException 숫자가 아닌 문자열의 경우. 이 메서드는 값이 각각 int 또는 long의 범위를 벗어나면 실패합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | classMain { publicstaticboolean isNumeric(Strings) { try{ Integer.parseInt(s); }catch(NumberFormatException ex){ returnfalse; } returntrue; } publicstatic voidmain(String[]args) { Strings="100"; System.out.println("IsNumeric: "+ isNumeric(s)); } } |
다운로드 코드 실행
결과:
IsNumeric: true
Java에서 String이 유효한 숫자인지 여부를 확인하는 것이 전부입니다.
읽어 주셔서 감사합니다.
우리의 온라인 컴파일러 C, C++, Java, Python, JavaScript, C#, PHP 및 기타 널리 사용되는 프로그래밍 언어를 사용하여 주석에 코드를 게시합니다.
우리처럼? 우리를 친구에게 소개하고 우리가 성장할 수 있도록 도와주세요. 행복한 코딩 :)