Java에서 인덱스로 문자열의 문자 가져 오기

Mohammad Irfan 2023년10월12일
  1. Java에서 charAt() 메소드를 사용하여 String 문자 가져오기
  2. String.valueOf() 메서드를 사용하여 Char를 문자열로 변환
  3. Java의 문자열에서 Char 배열 가져오기
  4. 유니코드 SMP(Supplementary Multilingual Plane)의 문자 가져오기
  5. 요약
Java에서 인덱스로 문자열의 문자 가져 오기

이 튜토리얼은 Java에서 인덱스로 String 문자를 가져오는 방법을 소개하고 주제를 이해하기 위한 몇 가지 예제 코드도 나열합니다.

문자열은 일련의 문자를 저장하는 데 사용됩니다. 배열과 마찬가지로 문자열도 0부터 시작하는 인덱싱을 따릅니다. 이는 문자열의 첫 번째 문자에 0의 인덱스 값이 할당됨을 의미합니다. 인덱스를 사용하여 문자열에서 개별 문자를 가져올 수 있습니다. 이 자습서에서는 이 작업을 수행하는 방법을 배웁니다.

Java에서 charAt() 메소드를 사용하여 String 문자 가져오기

charAt() 메서드는 인덱스 값을 매개 변수로 사용하고 문자열의 해당 인덱스에 있는 문자를 반환합니다. 문자열에서 문자를 가져오는 가장 간단한 방법이며 String 클래스 메서드입니다.

public class Demo {
  public static void main(String[] args) {
    String s = "test string";
    char characterAtIdx1 = s.charAt(1); // character e
    char characterAtIdx4 = s.charAt(4); // whitespace
    char characterAtIdx5 = s.charAt(5); // character s

    System.out.println("The string is: " + s);
    System.out.println("Character at Index 1: " + characterAtIdx1);
    System.out.println("Character at Index 4: " + characterAtIdx4);
    System.out.println("Character at Index 5: " + characterAtIdx5);
  }
}

출력:

The string is: test string
Character at Index 1: e
Character at Index 4:  
Character at Index 5: s

위의 코드에서 보았듯이 이 메서드의 반환 유형은 char입니다. Character 클래스의 toString() 메서드를 사용하여 이 char 유형을 문자열로 변환할 수 있으며 length() 메서드를 사용하여 이 문자열의 길이를 얻을 수도 있습니다.

public class Demo {
  public static void main(String[] args) {
    String s = "test string";
    char characterAtIdx6 = s.charAt(6); // character t
    String stringAtIdx6 = Character.toString(characterAtIdx6); // char to string
    System.out.println("Length: " + stringAtIdx6.length());
    System.out.println("String: " + stringAtIdx6);
  }
}

출력:

Length: 1
String: t

String.valueOf() 메서드를 사용하여 Char를 문자열로 변환

문자열에서 문자를 가져온 후 String.valueOf() 메서드를 사용하여 필요한 경우 문자를 String으로 변환할 수 있습니다.

public class Demo {
  public static void main(String[] args) {
    String s = "test string";
    char characterAtIdx6 = s.charAt(6); // character t
    String stringAtIdx6 = String.valueOf(characterAtIdx6); // char to string

    System.out.println("Length: " + stringAtIdx6.length());
    System.out.println("String: " + stringAtIdx6);
  }
}

출력:

Length: 1
String: t

빈 문자열을 문자에 연결하여 문자열로 변환할 수도 있습니다. 사이에 아무 것도 없는 따옴표는 빈 문자열을 나타냅니다. 이것은 Java에서 String 객체를 가져오는 가장 간단하고 암시적인 방법 중 하나입니다.

public class Demo {
  public static void main(String[] args) {
    String s = "test string";
    char characterAtIdx6 = s.charAt(6); // character t
    String stringAtIdx6 = "" + characterAtIdx6; // char to string

    System.out.println("Length: " + stringAtIdx6.length());
    System.out.println("String: " + stringAtIdx6);
  }
}

출력:

Length: 1
String: t

Java의 문자열에서 Char 배열 가져오기

대괄호를 사용하여 인덱스로 배열 요소를 얻을 수 있습니다. 문자열을 char 유형 배열로 변환하면 모든 문자를 가져올 수 있습니다.

Java는 char 배열을 반환하는 편리한 toCharArray() 메서드를 제공합니다. 우리는 이 방법을 문자열에 사용할 수 있고 그것에 대한 char 배열을 얻을 수 있습니다.

public class Demo {
  public static void main(String[] args) {
    String s = "test string";
    char[] charArr = s.toCharArray();

    System.out.println("The string is: " + s);
    System.out.println("Character at Index 1: " + charArr[1]);
    System.out.println("Character at Index 4: " + charArr[4]);
    System.out.println("Character at Index 5: " + charArr[5]);
  }
}

출력:

The string is: test string
Character at Index 1: e
Character at Index 4:  
Character at Index 5: s

이전 섹션에서 설명한 방법을 사용하여 char를 문자열로 변환할 수 있습니다.

public class Demo {
  public static void main(String[] args) {
    String s = "test string";
    char[] charArr = s.toCharArray();

    char characterAtIdx6 = charArr[6]; // character t
    String str1 = Character.toString(characterAtIdx6); // char to string
    String str2 = String.valueOf(characterAtIdx6); // char to string
    String str3 = "" + characterAtIdx6; // char to string

    System.out.println("Using toString()");
    System.out.println("Length: " + str1.length() + " String: " + str1);

    System.out.println("\nUsing valueOf()");
    System.out.println("Length: " + str2.length() + " String: " + str2);

    System.out.println("\nUsing empty string concatenation");
    System.out.println("Length: " + str3.length() + " String: " + str3);
  }
}

출력:

Using toString()
Length: 1 String: t
Using valueOf()
Length: 1 String: t
Using empty string concatenation
Length: 1 String: t

유니코드 SMP(Supplementary Multilingual Plane)의 문자 가져오기

드문 경우지만 문자열에 기본 유니코드 다국어 평면에 없는 문자가 포함될 수 있습니다. 예를 들어 이모티콘 또는 이모티콘 문자열이 있습니다. 이러한 문자는 유니코드 SMP(Supplementary Multilingual Plane)의 일부입니다.

위의 접근 방식은 이러한 문자에 대해 작동하지 않습니다. codePointAt() 메서드를 사용하여 문자열에서 이러한 문자를 가져올 수 있습니다. 이 메서드는 해당 인덱스에 있는 문자의 유니코드 값을 나타내는 정수를 반환합니다. 이러한 문자를 보려면 적절한 글꼴이 설치되어 있는지 확인하십시오.

public class Demo
{
	public static void main(String[] args)
	{
		String s = "😀 the grinning emoji";
		for(int i=0; i<s.length();)
		{
			int codePoint = s.codePointAt(i);
			char[] charArr = Character.toChars(codePoint);//More than one characters may be required to represent an SMP char 
			System.out.print(new String(charArr) + " ");
			
			i = i + Character.charCount(codePoint);//Increase i according to the number of chars required for that SMP char
		}
	}
}

출력:

😀   t h e   g r i n n i n g   e m o j i 

charAt() 메서드를 사용하여 동일한 문자열을 인쇄하려고 하면 다음과 같은 출력이 표시됩니다.

public class Demo
{
    public static void main(String args[])
    {
      String s = "😀 the grinning emoji";
		for(int i=0; i<s.length(); i++)
		{
			char c = s.charAt(i);
			System.out.print(c + " ");
		}
    }
}

출력:

? ?   t h e   g r i n n i n g   e m o j i 

요약

문자열은 배열과 마찬가지로 0부터 시작하는 인덱싱을 따릅니다. charAt() 메서드를 사용하여 문자열에서 개별 문자를 가져올 수 있습니다. 문자열을 문자 배열로 변환한 다음 해당 인덱스를 사용하여 개별 문자를 가져올 수도 있습니다. 단일 문자를 char가 아닌 문자열로 원하는 경우 Character.toString() 또는 String.valueOf() 메서드를 사용하여 변환합니다. 때로는 문자열에 기본 다국어 평면 외부의 문자가 포함될 수 있습니다. 이러한 경우 charAt() 메서드 대신 codePointAt() 메서드를 사용할 수 있습니다.

관련 문장 - Java String