Java에서 문자열에 숫자가 포함되어 있는지 확인

Shikha Chaudhary 2023년10월12일
  1. Java에서 문자열에 숫자가 포함되어 있는지 확인
  2. matches() 메서드를 사용하여 Java에서 문자열에 숫자가 포함되어 있는지 확인
  3. replaceAll() 메서드를 사용하여 Java에서 문자열에 숫자가 포함되어 있는지 확인
  4. isDigit() 메서드를 사용하여 Java에서 문자열에 숫자가 포함되어 있는지 확인
  5. 결론
Java에서 문자열에 숫자가 포함되어 있는지 확인

이 기사에서는 Java의 문자열에서 숫자를 찾는 다양한 방법에 대해 설명합니다.

Java에서 문자열에 숫자가 포함되어 있는지 확인

Java에서 문자열은 단순히 문자 시퀀스 또는 문자 배열입니다. 그러나 숫자 값도 포함될 수 있습니다. 문자열은 다음과 같습니다.

String a = "Hello World!";

숫자 값을 입력하면 문자열이 다음과 같이 표시됩니다.

String a = "This is 123";

문자열에 숫자 값을 넣는 것은 불법이 아닙니다. 예를 들어 아래 프로그램을 보십시오.

import java.util.*;
public class Demo {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    // Asking for a string input
    System.out.println("How may we help you?");
    String a = sc.nextLine();

    System.out.println("Okay, thank you!");
  }
}

출력:

How may we help you?
Find the cube of 10
Okay, thank you!

사용자가 문자열 안에 숫자 값을 입력한 경우에도 프로그램이 제대로 실행된다는 점에 유의하십시오. 그러나 이것은 숫자가 문자열에 있는지 여부를 알아내야 하는 상황으로 이어집니다.

이 기사에서는 이를 수행하는 몇 가지 방법을 살펴볼 것입니다.

Java에는 Java String 클래스라는 클래스가 있습니다. 이 클래스에는 Java 문자열을 다양한 방식으로 조작하는 많은 방법이 있습니다. 문자열에 숫자가 있는지 알아보기 위해 Java 라이브러리에서 제공하는 몇 가지 내장 메서드를 사용할 수 있습니다.

그러나 시작하기 전에 전제 조건으로 regex 또는 regular expression에 대해서도 알아야 합니다. 정규식 또는 정규식은 Java에서 문자열을 편집, 변경 또는 조작하는 데 도움이 되는 API입니다. 문자열 패턴을 기반으로 작동합니다.

Regex는 주로 이메일 주소의 유효성을 검사하고 비밀번호가 기본 제약 조건을 충족하는지 확인하는 데 사용됩니다. java.util.regex 패키지는 정규 표현식에 도움이 됩니다.

이 패키지에는 다른 목적을 위한 세 가지 주요 클래스가 있습니다.

  • util.regex.Pattern: 문자열 패턴을 정의하는 데 사용됩니다.
  • util.regex.Matcher: 패턴을 사용하여 일치 작업을 수행합니다.
  • PatternSyntaxException: 정규식에 존재하는 구문 오류를 나타냅니다.

Java의 정규식 및 패턴에 대해 자세히 알아보려면 이 문서를 참조하세요.

matches() 메서드를 사용하여 Java에서 문자열에 숫자가 포함되어 있는지 확인

자바 문자열 matches() 메서드는 문자열이 주어진 정규식과 일치하는지 확인합니다. 두 가지 다른 방법으로 사용할 수 있습니다.

string.matches(regex)

또는

Pattern.matches(regex, string)

위의 방법 중 하나를 사용하여 동일한 결과를 얻습니다. 예를 들어 보겠습니다.

import java.io.*;
public class Demo {
  public static void main(String args[]) {
    String Str = new String("We will learn about regular expressions");

    System.out.println(Str.matches("(.*)regular(.*)"));

    System.out.println(Str.matches("expressions"));

    System.out.println(Str.matches("We(.*)"));
  }
}

출력:

true
false
true

expressions라는 단어가 문자열에 있지만 결과가 거짓이라는 사실이 궁금할 것입니다. 다른 두 패턴에서는 마침표와 별표를 사용합니다.

마침표 사용 . 모든 문자와 일치하지만 개행 문자는 일치하지 않습니다. 예를 들어 .articleparticle과 일치하지만 article은 일치하지 않습니다.

반면 별표 *는 표현을 반복하는 데 사용됩니다. 일련의 0개 이상의 문자를 일치시키려면 .* 기호를 사용합니다.

문자열에 숫자가 있는지 확인하는 방법을 살펴보겠습니다.

import java.io.*;
public class Demo {
  public static void main(String args[]) {
    String Str = new String("The string has the number 10.");

    // Using regular expressions
    System.out.println(Str.matches("(.*)10(.*)"));
  }
}

출력:

true

마지막 줄을 변경했지만 여전히 동일한 출력을 얻습니다. 여기에서 .*는 0에서 무한까지 문자의 발생을 찾습니다.

그런 다음 이중 백슬래시는 두 번째 백슬래시를 이스케이프하여 1에서 무한 시간까지의 숫자를 찾습니다.

\\d[0-9]로 바꿀 수도 있습니다. 데모용 코드를 보십시오.

import java.io.*;
public class Demo {
  public static void main(String args[]) {
    String Str = new String("The string has the number 10.");

    System.out.println(Str.matches(".*[0-9].*"));
  }
}

출력:

true

이러한 모든 메서드는 부울 값으로만 ​​결과를 반환합니다. 다른 방법으로 숫자를 출력으로 제공할 수 있습니다.

Java의 matcher 클래스에 대한 자세한 내용은 이 문서를 참조하십시오.

replaceAll() 메서드를 사용하여 Java에서 문자열에 숫자가 포함되어 있는지 확인

이 방법은 문자열에 있는 숫자 하나만이 아니라 모든 숫자를 제공합니다. 여기서는 3단계 접근 방식을 따릅니다.

먼저 숫자가 아닌 문자를 공백으로 바꿉니다. 다음으로 연속된 공백을 하나의 공백으로 병합하고 마지막으로 나머지 문자열에 숫자만 포함되도록 후행 공백을 버립니다.

public class Demo {
  static String FindInt(String str) {
    // First we replace all the non-numeric characters with space
    str = str.replaceAll("[^\\d]", " ");

    // Remove all the trailing spaces
    str = str.trim();

    // Replace consecutive white spaces with one white space
    str = str.replaceAll(" +", " ");

    if (str.equals(""))
      return "-1";

    return str;
  }
  public static void main(String[] args) {
    String str = "gibberish123gibberish 456";
    System.out.print(FindInt(str));
  }
}

출력:

123 456

정규식 문자열과 대체 문자열을 사용하는 replaceAll() 메서드를 사용합니다. 정규식 및 대체 문자열과 일치하는 문자를 대체하는 문자열을 반환합니다.

통사론:

string.replaceAll(String regex, String replacement)

그런 다음 trim() 메서드를 사용하여 선행 및 후행 공백을 버립니다. Java는 공백 \u0020의 유니코드 값을 사용하여 이를 수행합니다.

trim() 메서드는 문자열 사이의 공백을 제거하지 않습니다. 문자열의 끝과 시작에서 공백만 확인합니다.

통사론:

string.trim()

isDigit() 메서드를 사용하여 Java에서 문자열에 숫자가 포함되어 있는지 확인

문자열에서 정수를 찾으려면 isDigit()이라는 내장 함수를 사용할 수 있습니다. 그러나 그 전에 문자열을 문자 배열로 변환해야 합니다. 예를 보십시오.

public class Demo {
  public static void main(String args[]) {
    String example = "Find the square of 10";
    char[] ch = example.toCharArray();
    StringBuilder strbuild = new StringBuilder();
    for (char c : ch) {
      if (Character.isDigit(c)) {
        strbuild.append(c);
      }
    }
    System.out.println(strbuild);
  }
}

출력:

10

먼저 toCharArray() 메서드를 사용하여 문자열을 문자 배열로 변환합니다. 새로 할당된 배열과 이전 문자열의 길이가 동일합니다.

통사론:

string.toCharArray()

그런 다음 배열의 각 요소에 isDigit() 메서드를 사용하여 문자열에 숫자가 있는지 찾을 수 있습니다.

결론

이 기사에서는 Java의 문자열에서 숫자를 찾는 방법을 살펴보았습니다. 이를 위해 다양한 방법으로 정규식을 사용할 수 있습니다. 그러나 정규식은 출력을 부울 값으로 제공합니다.

출력을 숫자로 얻으려면 trim() 메서드와 함께 replaceAll() 메서드를 사용할 수 있습니다. Java isDigit() 메서드를 사용하여 문자열에서 숫자를 찾을 수도 있습니다.

관련 문장 - Java String