Programming/JAVA

[JAVA] 문자열을 배열로 분리시키기 / chatAt() / concat() / length() / substring() / replace() / trim() / toUpperCase() / toCharArray() / NoSuchelementException / hasMoreTokens() / countTokens() / foreach문

Jayna. 2023. 12. 29. 16:44
728x90

 

1.  문자열.charAt(int index) : 반환형 char

 => 문자열에서 전달받은 index 위치의 문자 하나만 뽑아서 리턴

String str1 = "Hell world";
char ch = str1.charAt(4);
System.out.println("ch : "+ ch);   // 결과: 공백 출력

 

2.  문자열.concat(String str) : 반환형 String

 => 문자열과 전달받은 또 다른 문자열을 하나로 합쳐서 리턴

 => 문자열 + str

String str1 = "Hell world";
String str2 = str1.concat("!!!!!");
System.out.println("str2 : " + str2); // 결과: Hell world!!!!!

 

3.  문자열.length() : 반환형 int

  => 문자열의 길이를 반환(공백 포함)

String str1 = "Hell world";
System.out.println("str1의 길이 : " + str1.length() ); // 결과: 10

 

4.  문자열.subString(int startindex) : 반환형 String

  => 문자열의 startindex 위치에서 문자열 끝까지의 문자열을 추출해서 리턴 

     문자열.subString(int startindex, int endindex)

  => 문자열의 startindex 위치에서 endindex - 1 까지의 문자열을 추출해서 리턴

String str1 = "Hell world";
System.out.println(str1.substring(6)); // orld
System.out.println(str1.substring(0,6)); // Hell w

 

728x90

 

5. 문자열.replace(char old, char new) : 반환형 String

  => 문자열에서 old 문자를 new 문자로 변환한 문자열을 리턴

String str1 = "Hell world";
String str3 = str1.replace('l', 'x');
System.out.println("str3 : " + str3);

 

6.  문자열.trim() : 반환형 String

 => 문자열의 앞, 뒤, 공백을 제거한 문자열을 리턴

String str4 = "     J   A    V   A      ";
System.out.println("trim : " + str4.trim());

 

7. 문자열.toUpperCase() : 반환형 String

 => 모든 문자들 대문자로 변경 후 문자열 리턴

   문자열.toLowerCare() : 반환형 String

 => 모든 문자를 소문자로 변경 후 문자열 리턴

System.out.println("toUpperCase : "+str1.toUpperCase());
System.out.println("toLowerCase : "+str1.toLowerCase());

 

 

8.  문자열.toCharArray() : 반환형 char [ ]

  => 문자열의 각 문자들을 char [ ] 배열에 옮겨 담은 후 해당 배열을 리턴

char[] chArr = str1.toCharArray();
    for(int i = 0 ; i < chArr.length; i++) {
        System.out.print(chArr[i]+ " ");
    }

    System.out.println();
    // char[] => String
    char[] arr = {'a', 'p', 'p', 'l', 'e'};

    System.out.println(String.valueOf(arr));
}

 

public void method2() {
    // 종료하시겠습니까? ( Y/N ) : Y 아니면 N 입력받기
    // 경우의 수 
    // 1. Y / N
    // 2. y / n
    // 3. 와이 / 엔 == 엘스

    Scanner sc = new Scanner(System.in);
    System.out.print("종료하시겠습니까? (Y/N) : ");
    char a = sc.nextLine().toUpperCase().charAt(0);
    // 1. 문자열 입력받기
    // 2. 문자열의 모든 알파벳을 대문자로 바꿈
    // 3. 0번째 인덱스의 문자만 추출
    //  => 메소들을 연이어서 호출 : 메소드체이닝

    if(a == 'Y') {
        System.out.println("종료합니다");
        return ;
    }else if(a == 'N') {
        System.out.println("종료하지 않습니다.");			
    }else {
        System.out.println("잘못입력하셨습니다.");
    }
}

 

 

 

>> 문자열을 배열로 분시키기는 방법 1

 향상된 for문 : 초기식, 조건식, 증감식이 필요없음
 for each문

 for(값을 받아줄 수 변수 선언문 : 순차적으로 접근한 배열) { 
 
 }

 => 배열의 값을 수정할 수 없다.
 => 출력만 가능

public void method1() {
    // 문자열.split(String 구분자) : 반환형 String[]
    String[] arr = str.split(",");	

    for (int i = 0 ; i < arr.length ; i++) {
        System.out.println(arr[i]);
    }

    System.out.println();

    for(String s : arr) {
        System.out.println(s);
    }
}

 

 

>> 문자열을 배열로 분리시키는 방법 2 

    각각의 문자열을 토큰으로 처리
    java.util.StringTokenizer 클래스를 이용하는 방법

[표현법]
StringTokenizer stn = new StringTokenizer(문자열, 구분자);
public void method2() {
    // 객체 생성
    StringTokenizer stn = new StringTokenizer(str,",");

    System.out.println("분리된 문자열의 개수 : " + stn.countTokens());  // 6
    // countTokens() : 분리된 문자열의 개수를 반환해주는 메소드

    // 실제로 분리된 내용물을 보고 싶다면?
    System.out.println(stn.nextToken());  
    System.out.println(stn.nextToken());  
    System.out.println(stn.nextToken());
    System.out.println(stn.nextToken());  
    System.out.println(stn.nextToken());  
    System.out.println(stn.nextToken()); 

    // 남아있는 토큰이 없는데 또 nextToken()을 호출하면?
    System.out.println(stn.nextToken()); 
    // 오류: NoSuchelementException
    // 더이상 꺼내올 토큰(요소)가 없어서 발생하는 오류

    // 반복문
    while(stn.hasMoreTokens()) {
        // hasMoreTokens() : stn에 남아있는 토큰이 있으면 true, 토큰이 다 빠졌으면 false
        System.out.println(stn.nextToken());
    }
}
728x90