[java] String 클래스에서 많이 쓰이는 메소드 : .charAt() .toCharArray() .substring() .indexOf() .lastIndexOf(), split(), String.join()

심심이·2024년 1월 29일
0

java

목록 보기
26/46

1. charAt()

사용방식 : "문자열".charAt(int 인덱스)

원리 >

  • 문자열을 char로 반환해준다. ()안에는 해당 문자열의 인덱스가 int 타입으로 들어간다.

예시 코드 1) 사용 >

char ch = "안녕하세요".charAt(2);
System.out.println("ch => " + ch); // ch => 하

예시 코드 2) 응용: 문자 꺼꾸로 출력 >

 String str = "안녕하세요";
 //    index =>  01234
 //-------------------------------
 String result = "";
 for(int i = str.length()-1; i>=0; i--) {
     char ch = str.charAt(i);
     result += ch;
 }
 System.out.println(result);

2. toCharArray()

사용방식 : "문자열".toCharArray()

원리 >

  • 문자열을 char타입의 배열( char[] )로 만들어준다.
    (=String 문자열을 char형 배열로 바꿔서 반환)
  //=== 2. "문자열".toCharArray() ===
  // "안녕하세요".toCharArray()  ==> char 타입의 배열로 만들어준다.(return타입 배열)
  // ------------------------
  // |'안'|'녕'|'하'|'세'|'요'|  //배열길이 5
  // ------------------------
  //   0    1    2   3    4   <== index

예시 코드 1) 사용 >


String str = "안녕하세요";
char[] ch_arr = str.toCharArray(); 
// '안'|'녕'|'하'|'세'|'요' 배열 생성


예시 코드 2) 응용: 문자 꺼꾸로 출력 >


 String str = "안녕하세요";
 //    index =>  01234
 //-------------------------------
 //안녕하세요가 꺼꾸로 나오게 하기!! 
 
 char[] ch_arr = str.toCharArray();
 String result = "";
 for(int i = ch_arr.length-1; i>=0; i--) {
	 result += ch_arr[i];
 }
 System.out.println(result);

3. .substring()

사용방식 : "문자열".substring(int 시작인덱스, int 끝 인덱스) / "문자열".substring(int 시작인덱스)

원리 >

  • 문문자열에서 특정 부분만 골라낼 때 사용하며, 문자열의 인덱스를 추출한다.
"안녕하세요".substring(1, 4);  
 0 1 2 3 4 : 1부터 출발-> 녕, 4는 4앞까지(4는 포함하지 않는다.)
 // => 녕하세
 
 "안녕하세요".substring(2);
 "안녕하세요" 에서 시작인덱스가 2인 글자("하") 부터 끝까지 뽑아온다.
 // => 하세요

예시 코드 1) 사용 >

String str = "";
str = "안녕하세요".substring(1,4);
System.out.println(str); // 녕하세 출력

str = "안녕하세요".substring(2); 
System.out.println(str); //하세요 출력


4. .indexOf() & .lastIndexOf()

- .indexOf()

사용방식 : "문자열".indexOf("찾을문자열")

원리 >

  • "문자열" 에서 최초로 나오는 "찾을문자열"의 인덱스(int)를 알려준다.
  • 존재하지 않는 인덱스일 경우 -1이 출력된다.

예시 코드 1) 사용 >

int index = "시작하라 안녕하세요 건강하세요".indexOf("하");
System.out.println(index); // 2출력 => 가장 먼저 만난 2 출력

index = "시작하라 안녕하세요 건강하세요".indexOf("하세요");
System.out.println(index); // 7출력-> 가장 먼저 만난 하의 위치 출력

	      index = "시작하라 안녕하세요 건강하세요".indexOf("A");
	      System.out.println(index); 
	      //If no such value of k exists, then -1 is returned.
	      //존재하지 않는 인덱스 이므로 -1 출력

- .lastIndexOf()

사용방식 : "문자열".lastIndexOf("찾을문자열")

원리 >

  • "문자열" 에서 마지막으로 나오는 "찾을문자열"의 인덱스(int)를 알려준다.
  • 존재하지 않는 인덱스일 경우 -1이 출력된다.

코드 >

int index = "시작하라 안녕하세요 건강하세요".lastIndexOf("하");
System.out.println(index); // 마지막 하의 인덱스인 13 출력

index = "시작하라 안녕하세요 건강하세요".lastIndexOf("하세요");
System.out.println(index); // 하세요도 마지막 하를 발견한 13 출력

index = "시작하라 안녕하세요 건강하세요".lastIndexOf("A");
System.out.println(index);
//If no such value of k exists, then -1 is returned.
//존재하지 않는 인덱스 이므로 -1 출력


5. .split() ★

사용 방식: "문자열".split("구분자")

원리 >

  • 구분자를 기준으로 문자열을 자르는 메소드
  • "문자열"을 "구분자"로 잘라서 String 타입의 배열로 돌려주는 것이다.
  • 구분자로 잘라진 문자열들은 배열의 방에 배정된다.
    Ex. "제육볶음.볶음밥.닭가슴살.함박스테이크.소고기덮밥" 를 split([.])하면,
    => [제육볶음][볶음밥][닭가슴살][함박스테이크][소고기덮밥] 이 된다
    => 0, 1, 2, 3, 4 인덱스로 당연히 설정된다(배열이기 때문)

예시 코드 1) 사용 >


String food = "제육볶음,볶음밥,닭가슴살,함박스테이크,소고기덮밥";

String[] food_arr = food.split(",");
for(String fd : food_arr) {
	// 향상된 for문 ->
	// food_arr의 길이만큼 돌면서 처음은 "제육볶음"반환 두번째는 "볶음밥" 반환
	// 세번째는 "닭가슴살" 반환 을 food_arr 이 끝날떄까지 돈다 (소고기덮밥까지)
	System.out.println(fd);
}

-------------------------------------------------------------------

String food = "제육볶음	볶음밥	닭가슴살	함박스테이크	소고기덮밥";
String[] food_arr = food.split("\t");
for(int i = 0; i<food_arr.length; i++) {
	System.out.println((i+1) + "." + food_arr[i]);
}

예시 코드 2) 구분자로 특수문자 사용 시>

  • 구분자로 . | / 등 특수문자를 사용하려고 하는 경우 [] 안에 넣는다.

String food = "제육볶음.볶음밥.닭가슴살.함박스테이크.소고기덮밥";
String[] food_arr = food.split("[.]");
System.out.println(food_arr.length);

// split 사용시 구분자로 . | / 등 특수문자를 사용하려고 할 경우에는 구분자로 인식을 못할 경우가 많으므로 구분자 앞에 \\ 를 붙이거나 구분자를 [] 로 씌워주면 된다. (, 는 예외), \\구분자  이거나  [구분자] 이렇게 해야 한다.
		
        
----------------- 특수문자를 섞어 쓸 경우 ----------------

String food = "제육볶음.볶음밥,닭가슴살|함박스테이크.소고기덮밥";

String[] food_arr = food.split("[,.|\t]"); 

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

//1. 제육볶음
//2. 볶음밥
//.. 순으로 출력된다



6. String.join()

사용방법 : String.join("합칠 구분자", 문자열배열명)

원리 >

  • 문자열배열을 "합칠 구분자"로 합쳐서 String 타입으로 돌려준다.

예시 코드 1) 사용 >


String[] name_arr = {"한석규","두석규","세석규","네석규","오석규"};
System.out.println(String.join("-", name_arr));

//한석규-두석규-세석규-네석규-오석규

.split(), String.join() 섞어 쓰기

예시 코드 1) 사용 >


String str_1 = "시작하세요 안녕하세요 건강하세요";
str_1 = String.join("",str_1.split("하세요"));
//split은 배열을 리턴하기 때문에,  String.join("합칠 구분자", 문자열배열명) 에 대입하면 일치한다.
System.out.println(str_1);
//시작 안녕 건강


-------------------------------------------------------

String bank_book_no = "103-23-523-009";
bank_book_no = String.join("",bank_book_no.split("[-]"));
//split 후 [103], [23], [523], [009] 배열로 된 것을 join을 통해
//String 타입으로 돌려준다.
System.out.println(bank_book_no);
//10323523009

예시 코드 2) 응용: 문자열의 숫자 서로 더하기 >

		String money1 = "$2,000,000";
		String money2 = "$500,000";

		money1 = String.join("", money1.split("[$]"));

		money1 = String.join("", money1.split("[,]"));


		money2 = String.join("", money2.split("[$]"));
		money2 = String.join("", money2.split("[,]"));

		int sumMoney = 1;
		sumMoney = Integer.parseInt(money1) + Integer.parseInt(money2);

		DecimalFormat df = new DecimalFormat("#,###"); //3 자리마다 콤마를 찍어준다.
		System.out.println(df.format(sumMoney));

DecimalFormat은 구분선이나 소수점을 표현할때 사용한다

profile
개발하는 심심이

0개의 댓글

관련 채용 정보