[JAVA]/10. API

22_3. [강의] String 메소드

76beny 2022. 5. 29. 11:29
 

 

1. equals : 문자열을 비교하는 함수

String a = "aaa";
String b = "aaabbb";
System.out.println(a.equals("aaa"));
System.out.println(a.equals(b));

//System.out.println(a == new String("aaa"));
// 절대 == 이렇게 쓰면 안된다 ㅠ(문자열 비교시 비교연산자사용X)

A .equals(B) 

 A와 B가 같니?(문자열)

 

[출력]

true
false

 

2. contains : 문자열의 포함 여부를 알려주는 함수

System.out.println(a.contains("a"));
System.out.println(a.contains(b));
System.out.println(b.contains(a));

A .contains(B)

A에 B가 들어가 있니?(문자열)

 

[출력]

true
false
true

 

3. comparTo : 문자열의 유사를 확인하는 함수

a = "Hello Java";
b = "Hello Java World!!";
System.out.println(a.compareTo(b));
System.out.println(b.compareTo(a));

숫자가 크면 클수록 유사성이 없는 문자열, 10미만일 경우에는 유사도가 높다.

 

[출력]

-8
8

 

4.concat : 문자열을 결합하는 함수

String str = "홍길동";
String str2 = "의 주소지는 서울입니다.";
String str3 = str.concat(str2);
System.out.println(str3);
System.out.println(str + str2);

[출력]

홍길동의 주소지는 서울입니다.
홍길동의 주소지는 서울입니다.

 

5. chatAt() : 문자열에서 하나의 문자만 반환하는 기능

String temp = "abcdef";
		for (int i = 0; i < temp.length(); i++) {
			System.out.print(temp.charAt(i) + " ");
}

charAt(index)

index는 0~자기자신-1까지 돈다!

 

[출력]

a b c d e f 

 

6.indexOf() : 문자열 내에서 매개변수와 일치하는 문자를 찾아 index를 반환하는 함수

String str4 = "안녕하세요?";
System.out.println(str4.indexOf("하"));

"하"가 인덱스 몇번째에 있는지!찾는 기능

 

[출력]

2

 

str4 = "abcabcabc";
System.out.println(str4.indexOf("a"));// 0
System.out.println(str4.indexOf("bc"));// 1 첫 시작 인덱스값나옴
System.out.println(str4.indexOf("a", 1));//인덱스 1부터 시작해서 a위치 찾기
System.out.println(str4.indexOf("a", 4));//인덱스 4부터 시작해서 a의 위치 찾기
System.out.println(str4.indexOf("d"));// -1 (없는값이라서)
//int result = str4.indexOf("a",4);//값 가져와서 사용법, 이런식으로 사용 함.

[출력]

0
1
3
6
-1

 

* // 응용편
// '안녕'이라고 친 문자열 개수를 찾고 인덱스를 출력하세요!

String str5 = "안녕하세요? 저는 홍길동이고, 다시 안녕하세요 하는 " + "사람은 제가 아니고 안녕하세요 말하고 있지";
		String token = "안녕";
		int startIndex = 0;
		int count = 0;
		while (true) {
			int result = str5.indexOf(token, startIndex);
			if (result < 0) {
				break;
			}
			count++;
			System.out.println("찾은 index : " + result);
			startIndex = result + token.length();
		}
		System.out.println("찾은 갯수 : " + count);

int result = str5.indexOf(token, startIndex);
//str5에서 인덱스0부터(startIndex)시작하고,"안녕"(token)이라는 문자열을 찾아!그결과가 result야!

 

if (result < 0) {

//만약 result가 0보다 작으면 멈춰 ( 0보다 작으면 음수이고, 음수면 결과가 없다는 뜻)

 

count++;

//result가 0보다 크면 count를 1씩 증가해서 다시 돌려!

 

startIndex = result + token.length();

//위에서 나온 result를 token길이로 해서 startIndex로 다시 위에서 시작해
//token.length()가 없으면 무한반복이 발생=> 첫번째 안녕을 찾고 남은길이를 더해주는 기능이라고 생각!

 

 

[출력]

찾은 index : 0
찾은 index : 20
찾은 index : 40
찾은 갯수 : 3

 

lastIndexOf : 문자열을 찾는데 뒤에서부터 찾는다!

System.out.println(str5.lastIndexOf("안녕"));
System.out.println(str5.lastIndexOf("안녕", 40 - 2));
System.out.println(str5.lastIndexOf("안녕", 20 - 2));

System.out.println(str5.lastIndexOf("안녕", 40 - 2));

마지막위치가 40 이고 거기서 자신의 인덱스 안녕 이 2개의 문자열길이를  가지니까 -2하고, 40-2한 위치부터 다시 "안녕"검색!

 

System.out.println(str5.lastIndexOf("안녕", 20 - 2));

마지막위치가20이고 거기서 자신의 인덱스 안녕 이 2개의 문자열길이를 가지니까 -2하고, 40-2한 위치부터 다시 "안녕"검색!

 

[출력]

40
20
0

 

8. trim류 : white space를 제거하는 함수

final String origin = " \r    이름 : #*홍길동, 나이 : #*23, 주소 : #*서울시 강남구   \u2003\n\t";
	
		// white space의 종류
		System.out.println(origin.trim()); 
		// 문자 쓰레기 값을 제외한 white space 제거,유니코드는 제거안됨.
		
		System.out.println(origin.strip()); // 모든 white space 제거  ★★★★★★
		
		System.out.println(origin.stripLeading()); // 앞쪽만 제거하는 함수
			
		System.out.println(origin.stripTrailing()); // 뒤쪽만 제거하는 함수
			
		System.out.println(origin.stripIndent()); 
		// white space 중에 \t newline 제외 인텐트를 살릴때
		
		//★★★★★
		String text = origin.strip();//strip를 추천!! 가장 빠르고 가장 많이 제거해줌!!!!
		System.out.println(text);
		//web에서 비일비재하게 쓰인다! 특히 게시판이나 입력 들어올때!(왜냐면 입력같은거 할때 엔터 많이 치니까!)

.trim()

문자 쓰레기 값을 제외한 white space 제거,유니코드는 제거안됨.

 

.strip()

모든 white space 제거

 

.stripLeading()

앞쪽만 제거하는 함수

 

.stripTrailing()

뒤쪽만 제거하는 함수

 

.stripIndent()

white space 중에 \t newline 제외 인텐트를 살릴때

 

[출력]

이름 : #*홍길동, 나이 : #*23, 주소 : #*서울시 강남구   ?
이름 : #*홍길동, 나이 : #*23, 주소 : #*서울시 강남구
이름 : #*홍길동, 나이 : #*23, 주소 : #*서울시 강남구   ?

 
    이름 : #*홍길동, 나이 : #*23, 주소 : #*서울시 강남구

   이름 : #*홍길동, 나이 : #*23, 주소 : #*서울시 강남구

이름 : #*홍길동, 나이 : #*23, 주소 : #*서울시 강남구

 

 

9. substring : 문자열을 정한 위치에서 자를때 사용

System.out.println(text.substring(10));//10글자 부터
		
System.out.println(text.substring(4,10));//4~10글자까지
		
System.out.println(text.substring(text.length()-10,text.length()));//뒤에서 10글자까지

* 주의 : 문자열의 길이를 잘못지정하는 경우 죽는다.

 

[출력]

, 나이 : #*23, 주소 : #*서울시 강남구
 #*홍길동
 #*서울시 강남구

 

10. replace : 문자열 대체할 때 (교체할때), replaceAll : 특수문자 제거할때

System.out.println(text.replace("#*",""));
System.out.println(text.replace("홍길동","구길동"));

replace(A,B)

A를B로 변경

 

[출력]

이름 : 홍길동, 나이 : 23, 주소 : 서울시 강남구
이름 : #*구길동, 나이 : #*23, 주소 : #*서울시 강남구

 

String match = "[^\uAC00-\uD7A3xfe0-9a-zA-Z\\s]";
System.out.println(origin.replaceAll(match, ""));

[출력]

    이름  홍길동 나이  23 주소  서울시 강남구   

 

11.split : 문자열을 특정 인자 (delimiter) 로 잘라서 토큰(token)으로 반환하는 함수

System.out.println("원문 = " + text);
		//,와 : 로 분류하면 타입과 값이 분류되고 값들이 또 분류되고!

		
		//1번
		String[] strArray = text.split(",");//Deliniter = ','
		
		for (int i = 0 ; i < strArray.length; i++) {
			System.out.println(strArray[i]);
		}	
		
	

		//2번
		String[] outArray = text.split(",");//
		
		for(String s : outArray) {	//단축된 for문, 배열이나 컬렉션에서 사용
			String[] inArray = s.split(":");
			for(String s2 : inArray) {
				System.out.println(s2.strip());
			}	
		}

[출력]

원문 = 이름 : 홍길동, 나이 : 23, 주소 : 서울시 강남구

 

[1번 출력]

이름 : 홍길동
 나이 : 23
 주소 : 서울시 강남구

 

[2번 출력]

이름
홍길동
나이
23
주소
서울시 강남구

 

 

 

12.join() : 배열을 특정 문자열로 합쳐주는 기능

String[] strArray2 = text.split(","); 	//  Delimiter = ,
		System.out.println(strArray2[0]);
		System.out.println(strArray2[1]);
	

		String temp2 = String.join("_", strArray2);
		System.out.println(temp2);

[출력]

이름 : 홍길동


 나이 : 23


이름 : 홍길동_ 나이 : 23_ 주소 : 서울시 강남구

 

13.StringTokenizer : Split의 객체버전

System.out.println(text);

StringTokenizer tokens = new StringTokenizer(text,","); 
		while(tokens.hasMoreElements()) {	//다음의 엘리먼트를 가지고 있니?
			System.out.println(tokens.nextElement());	//응!다음 엘리먼트야!
		}

[출력]

이름 : 홍길동, 나이 : 23, 주소 : 서울시 강남구


이름 : 홍길동
 나이 : 23
 주소 : 서울시 강남구

 

14. 대소문자 변경하기 - toXXXXXCase

String temp5 = "ABC abc AAA bbb";
System.out.println(temp5.toUpperCase()); // 대문자 변경
System.out.println(temp5.toLowerCase()); // 소문자 변경

.toUpperCase()

대문자 변경

 

.toLowerCase()

소문자 변경

 

[출력]

ABC ABC AAA BBB
abc abc aaa bbb

 

 

15.valueOf : 다른 자료형으로 변환하기.

int age = 23;
		String strAge1 = ""+age;//1.방법 이거추천!
		String strAge2 = String.valueOf(age);//2.방법-> 이런방법도 있다~

 

16.repeat :반복하기

String repeatText = "ABC".repeat(10);
System.out.println(repeatText);

[출력]

ABCABCABCABCABCABCABCABCABCABC

 

 

 


"본 인터넷 사이트 내의 모든 이미지, 문구, 콘텐츠, 내용 등에 대한 저작권은 76beny에게 있습니다.

이를 무단으로 도용, 복사, 전재, 재배포, 2차 변형 등을 할 경우

민, 형사상 법적 조치 등 저작권법에 의거하여 처벌 받을 수 있습니다."