[Java] String 클래스

String(java.lang.String) 클래스참조타입으로, Java에서 문자열 타입을 사용하거나 활용하기 위해 사용한다.
 참조타입이지만 쌍 따옴표를 이용하여 리터럴(Literal)처럼 사용할 수 있도록 특별히 조치되어있다.

▪ 비정적 메서드(객체 메서드)
▫ charAt(int i) : 호출 대상이 되는 문자열의 i번째에 있는 문자를 반환한다. 체인메서드(Chain Method)의 일종이다.
System.out.println("Hello World".charAt(6)); // 'W'
▫ concat(String s): 호출 대상이 되는 문자열에 s문자열을 합쳐 새로운 문자열 객체를 반환한다.

String msg = "Hello".concat("World!");
.concat("Mr.");
.concat("Simpson?");
System.out.println(msg); //Hello World! Mr.Simpson

▫ contains(XhaeSequence cs) : 호출대상이 되는 문자열이 매개변수 cs를 포함하고 있는지의 여부를 반환한다.

System.out.println("Hello World".contains("Hello")); //  true
System.out.println("Nice to meet you.".contains("Very")); // false

▫ endsWith(String s) : 호출 대상이 되는 문자열의 내용이 매개변수 s의 내용으로 끝나는가의 여부를 반환한다.
System.out.println("Hello World".endsWith("World")); // true
System.out.println("Hello World".endsWith("Hello")); // false

▫ equals(Object o): 호출 대상이 되는 문자열의 내용이 매개변수 o의 타입이 문자열이고 그 내용이 동일한가의 여부를 반환한다. 대소문자를 구분함에 유의한다.
System.out.println("Hello".eqals("Hello")); // true
System.out.println("Hello".eqals("hello")); // false

▫ eqalsIgnoreCase(String s) : 위 eqals(...) 매서드와 유사하나 대소문자를 구분하지 않는다.

System.out.println("Hello".eqalsIgnoreCase("Hello")); // true
System.out.println("Hello".eqalsIgnoreCase("hello")); // ture

▫ length() : 호출대상이 되는 문자열의 내용의 정수인 길이를 반환한다. 바이트 어쩌고는 관계없이 단순히 글자의 개수를 반환한다.
System.out.println("아몬드봉봉".length());//5

▫ matches(String r) : 호출대상이 되는 문자열의 내용이 주어진 매개변수인 정규식 r을 만족하는가의 여부를 반환한다.
if("010-1234-5678".matches("^(010)-([0-9]{4})-([0-9]{4}$")){
System.out.println("올바른 연락처 입니다.");
}else {
System.out.println("올바르지 않은 연락처입니다!");}

▫ repeat(int t) : 호출 대상이 되는 문자열의 내용을 t번 반복하여 새로운 문자열을 반환한다.
System.out.println("아몬드봉봉").repeat(10)); // "아몬드봉봉아몬드봉봉아몬드봉봉아몬드봉봉아몬드봉봉아몬드봉봉아몬드봉봉아몬드봉봉아몬드봉봉아몬드봉봉"


▫ replace(CharSequence f, CharSequence t): 호출 대상이 되는 문자열에서 f를 찾아 t로 바꾼다.
System.out.println:010-1234-5678".replace("-",""));//"01012345678"

▫ replaceAll(String r, String t) :  호출 대상이 되는 문자열에서 정규식 r에 일치하는 대상을 t로 바꾼 새로운 문자열을 반환한다.(어려움)
System.out.println(" 김갑수 010-1234-5678".replaceAll("[0-9]","*"));// "김갑수 ***-****-****"

split(String s): 호출 대상이 되는ㄴ 문자열의 내용에 대해 매개변수s로 잘라낸 문자열 배열을 반환한다.
 String phone = "010-1234-5678";
 String[] phoneArray = phone.split("-");
 System.out.println(phoneArray[0]); // "010"
 System.out.println(phoneArray[1]); // "1234"
 System.out.println(phoneArray[2]); // "5678"

▫ startWith(String s) :  호출대상이 되는 문자열의 내용이 매개변수 s의 내용으로 시작하는가의 여부를 반환한다.
System.out.println("Hello World".startWith("World")) // false
System.out.println("Hello World".startWith("Hello")); // true

▫ substring(int f, int t): 호출 대상이 되는 문자열의 내용에 대해  f번째부터 t 앞 번째까지의 문자열을 잘라 새로운 문자열로 반환한다. t를 생략할 경으 f로부터 문자열 끝까지를 자른다.
 String msg = "Hello World!";
 System.out.println(msg.substring(0, 5)); // "Hello";
 System.out.println(msg.substring(6)); // "World!" ;
   
  


   
   
    public static String clearString(String s){ return s.contains("  ")? clearString(s.replace("  ", " ")) : s.trim();
s = s.trim();

while (s.contains("  ")){
s = s.replace("  "," ");
}
return s;

}
}
>> return s.contains("  ")? clearString(s.replace("  ", " ")) : s.trim() 삼항연산식 쓰면 훨씬 깔끔