5. 문자열 클래스 메소드 (유용)
by mini_min◾ 문자열 관련 메소드
◾ length() : 문자열 길이
◾ substring(s,e) : s인덱스에서 e-1인덱스까지의 문자열
◾ charAt() : 문자열에서 특정 한 문자 출력
◾ startsWith() : 문자열이 특정 문자열로 시작하는지?
◾ endsWith() : 반대개념
◾ compareTo() : 문자열을 사전식으로 비교하여 차이를 반환(ASCII 코드 차이)
String s1 = "seoul korea";
String s2;
int n;
n = s1.length();
System.out.println("문자열 길이 : " + n); //11
//6인덱스부터 8인덱스까지 문자열 추출
//배열도 0부터 시작하기 때문에 6부터 시작(인덱스는 0부터 시작)
// substring(s,e) : s인덱스에서 e-1인덱스까지의 문자열
s2 = s1.substring(6,9); //end 인덱스 - begin 인덱스 갯수만큼 출력
System.out.println(s2); //kor
s2 = s1.substring(6); //6인덱스에서 끝까지 출력
System.out.println(s2); //korea
//문자열에서 특정 한문자 출력하고 싶음
char c = s1.charAt(6);
System.out.println(c);
System.out.println(s1.equals("seoul korea")); //true
System.out.println(s1.equals("Seoul Korea")); //false. 대소문자 구분
System.out.println(s1.equalsIgnoreCase("Seoul Korea"));
// true. 대소문자 구분 안함
// 문자열이 특정 문자열로 시작하는지 ?
System.out.println(s1.startsWith("seoul"));
// 문자열이 특정 문자열로 끝나는지 ?
System.out.println(s1.endsWith("korea"));
// 특정 문자열 비교
// 문자열은 < > == 으로 비교 불가
// compareTo() : 문자열을 사전식으로 비교하여 차이를 반환(ASCII 코드 차이)
System.out.println(s1.compareTo("seoul corea"));
// 'k' - 'c' : 8 (c에서 k까지 8차이)
// aabaaaaaa < abc
◾ equalsIgnoreCase() : 대소문자 구분 없이 동일한 문자열이 있는지 확인 ! TRUE / FALSE 값으로 나옴
END, end, End 등이 입력되면 do ~ while 문 종료
do {
System.out.println("이름은? ");
name = sc.next();
if(name.startsWith("김")) count++;
}while(!name.equalsIgnoreCase("end"));
◾ indexOf() : 특정 문자나 문자열이 몇번째 인덱스에 존재하는지 반환한다.
없으면 나오는 값은 -1
lastindex0f() 은 뒤에서부터 존재여부 확인한다.
replace() 는 첫번째 인자를 두번째 인자로 바꾼다.
replaceAll()도 용도는 동일한데, 다른 점은 정규식 사용이 가능하다!
💥 \\d 는 숫자 / \\s 는 공백(엔터, 탭포함) , | 는 또는 !
[0-9] 이렇게 숫자 표현 가능.
숫자랑 영문자 없애고 싶으면? : s1.replaceAll("[0-9A-Za-z]", "")
\\w 는 영숫자 / \\W 는 영숫자 제외 나머지 제거
String s1 = "seoul korea";
String s2;
int n;
//index0f() : 특정 문자나 문자열이 몇번째 인덱스에 존재하는지 반환
// 없으면 -1
n = s1.indexOf("seo");
System.out.println(n); //0. 처음에 위치
n = s1.indexOf("KOR"); //-1. 없으니까
System.out.println(n);
n = s1.indexOf("ko");
System.out.println(n); // 6
n = s1.indexOf("o", 3); //3 인덱스부터 검색
System.out.println(n); // 두번째 o 자리가 출력
//lastindex0f() : 뒤에서 부터 특정 문자나 문자열이 몇번째 인덱스에 존재하는지 반환
n = s1.lastIndexOf("o"); //
System.out.println(n);
s1 = "test.jpg";
s2 = s1.substring(s1.lastIndexOf(".")+1); //파일에서 확장자만 가져옴
System.out.println(s2);
s1 = "우리나라 대한민국 대한민국 만세";
// 대한이란 글자만 한글로
s2 = s1.replace("대한", "大韓"); //정규식은 사용불가
System.out.println(s2);
s2 = s1.replaceAll("대한", "大韓"); //정규식은 사용가능 (정규식 : 패턴)
System.out.println(s2);
// 정규식 패턴 - \\d : 숫자, \\s : 공백(엔터,탭포함), | : 또는
s1 = "우리 123 나라 456 대한";
s2 = s1.replaceAll("\\d", ""); //숫자 제거
System.out.println(s2);
s2 = s1.replaceAll("\\d", "").replaceAll("\\s", "");
s2 = s1.replaceAll("\\d|\\s", "");//숫자랑 공백 삭제
System.out.println(s2);
//[0-9] : 숫자
s2 = s1.replaceAll("[2-5]", ""); //2~5상 숫자 제거
System.out.println(s2);
// 숫자랑 영문자 없애기
s1 = "우리12나라 ab대한XY민국";
s2 = s1.replaceAll("[0-9A-Za-z]", ""); //영문자(대소문자), 숫자 제거
System.out.println(s2);
s2 = s1.replaceAll("\\w", ""); // \\w : 영숫자
System.out.println(s2);
s2 = s1.replaceAll("\\W", ""); // \\w : 영숫자 제외 나머지 제거
System.out.println(s2);
// 영문자, 숫자, 대한 제거
s2 = s1.replaceAll("\\w|대한", "");
System.out.println(s2);
//[] 안에 있는 글자는 한글자 한글자를 나타낸다.
◾ ^:시작 $:마지막 +:하나이상을 의미
[^] : 부정을 의미한다.
String s, p;
boolean b;
//1~3자 이내의 숫자가 있는지 검사
p = "\\d{1,3}"; //최소 1개, 최대3개 // \\d{8} : 8글자
s = "12";
b = s.matches(p); //정규식 패턴에 일치하면 true
System.out.println(b);
s = "1234";
System.out.println(s.matches(p)); // false
// ^:시작 $:마지막 +:하나이상
p = "^[가-힣]+$";
s = "홍ㅋ나";
System.out.println(s.matches(p)); // false
s = "홍길동";
System.out.println(s.matches(p)); // true
p = "010-\\d{4}-\\d{4}";
s = "010-1111-1111";
System.out.println(s.matches(p)); // true
// 숫자가 아닌 것은 *로 치환 // 아닌 것은 대가로 안에 꺽새^ 주기
s = "우리 12 abc 67 & 79";
s = s.replaceAll("[^0-9]", "*"); //[^] : 부정
System.out.println(s);
◾ format() 은 printf 와 유사하다.
n = 12345;
s = String.format("%,d", n); //printf 와 유사
System.out.println(s);//세 자리마다 컴마
◾ split () 는 특정 패턴으로 문자열을 분리해서 배열로 알아서 반환해준다.
s = "자바,스프링,오라클,HTML";
String[] ss = s.split(","); // 특정 패턴으로 문자열을 분리하여 배열로 반환
for(String a : ss) {
System.out.print(a + " ");
}
System.out.println(); //split <-분리할 때 사용 (,로 분리하도록 코드짬)
◾ 문자열을 입력 받아 문자열 중 대소문자 구분하지 않고 abc로 시작하는 문자열들의 갯수 카운트
Scanner sc = new Scanner(System.in);
String s;
int count = 0;
while(true) {
System.out.println("문자열[종료: end] ? ");
s = sc.next();
if(s.equalsIgnoreCase("end")) {
break;
}
//바꿔서 쉽게 카운트 //시작지점 0
if(s.toLowerCase().indexOf("abc")==0) {
count++;
}
}
'개발 공부중 > 📑 코드 복습' 카테고리의 다른 글
6. StringBuilder / StringBuffer (0) | 2023.02.24 |
---|---|
4. 다양한 클래스 (캘린더, Math, Object, wrapper 클래스 등) (0) | 2023.02.24 |
3. 생성자와 this (0) | 2023.02.24 |
2. 메소드 (0) | 2023.02.24 |
1. JAVA 객체와 클래스 (2) | 2023.02.24 |
블로그의 정보
개발자 미니민의 개발로그
mini_min