Java 숫자 체크 정규식 - Java susja chekeu jeong-gyusig

이 게시물은 문자열이 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 및 기타 널리 사용되는 프로그래밍 언어를 사용하여 주석에 코드를 게시합니다.

우리처럼? 우리를 친구에게 소개하고 우리가 성장할 수 있도록 도와주세요. 행복한 코딩 :)