자바의 String 클래스

String

String은 문자열을 나타낼 때 사용하는 자료형이며,

int double 같은 유형의 값형이 아닌

참조형이다. (즉 Stack이라는 영역에 직접적으로 값이 들어 있는 것이 아닌 Heap 영역에 값을 두고 Stack 이라는 영역에는 Heap 영역의 주소를 작성해놓음)

String 메서드

참조형 즉 클래스로 여러가지 메서드가 존재하는데

length

대표적으로 length 라는 걸 이용해 길이를 알아 낼 수 있다

예시

System.out.print("이름 입력: ");

String name = scan.nextLine();

if(name.length()>=2 && name.length() <=5) {

System.out.println("올바른 이름");

} else {

System.out.println("이름을 2~5자 이내로 입력하시오.");

}

출력
이름을 입력 받고 해당 이름이 2~5글자 안에 들어 온다면 올바른 이름 ,
범위 밖의 길이가 나온다면 아래에 있는 문구가 작성되도록 코드를 짜놓은 상태이다.

이렇게 유효성 검사를 하는 경우에도 사용이 되며

문자열 추출도 가능하다

charAt

Scanner scan = new Scanner(System.in);

System.out.print("주민번호 입력 (- 포함하시오): ");

String jumin = scan.nextLine();

if(jumin.charAt(6) == '-') {

System.out.println("올바른 입력");

} else {

System.out.println("올바르지 않은 입력");

}

출력
charAt 를 이용해 위치에 해당하는 글자의 문자를 추출하여 예시의 경우 중간에 - 이 없으면(자바 기준 6번째 위치) 올바르지 않은 입력이라는 문구를 출력하는 유효성 검사도 가능하다.

trim

String txt=" 하나 둘 셋 ";

System.out.printf("[%s]",txt.trim());//문자열 시작 , 끝에만 없앰.

출력

trim을 통해 양 끝의 의미없는 공백을 지우는 기능도 가지고 있다.

indexOf , lastIndexOf

내가 찾고자 하는 문자를 찾아주는 메서드인데 한 글자일 경우 해당 위치를
단어 또는 문장일 경우 해당하는 단어 문장의 맨 앞에 내용을 기준으로 위치를 알려준다

String txt= "안녕하세요. 홍길동입니다.";

int index =1;

index = txt.indexOf('하');

System.out.println(index); //하 의 위치 -> 2



index = txt.indexOf('홍');

System.out.println(index); //홍 의 위치 -> 7



index = txt.indexOf('강');

System.out.println(index); //입력을 받으면 무조건 돌려줘야함 '강'은 없으므로 index에서 받을 수 없는 -1을 반환



index = txt.indexOf("홍길동");

System.out.println(index); //3글자를 받아도 제일 앞의 글자 위치를 반환해줌

String txt1= "안녕하세요. 홍길동입니다. 반갑습니다. 홍길동입니다. 안녕히가세요. 홍길동입니다.";

index = txt1.indexOf("홍길동");

System.out.println(index); //무조건 맨 처음꺼 반환해줌 추가로 더 있어도 해당 위치에서 멈춤



index = txt1.indexOf("홍길동",10);

System.out.println(index); //어느 위치에서부터 검색 할건지 선택가능, 해당 위치에서부터 맨 앞글자 위치를 반환

index = txt1.indexOf("홍길동",index + 3);

System.out.println(index);

문자열에 존재하지 않으면 -1이 나오고 존재한다면 0이상의 숫자(자리 위치에 따라 다름)가 나온다

찾으려는 글자 단어 문장 옆에 , 를 붙이고 어느 지점부터 시작할지 선택 또한 가능하다 .

lastIndexOf의 경우 indexOf와 반대로 뒤에서부터 시작하는 것 외에는 차이가 없다 .

toUpperCase , toLowerCase

글자를 대문자로 변환하거나 소문자로 변환해주는 명령어이다 .

앞에 있는 indexOf와 섞어서 사용하게 될 경우


String content =" Java는 객체지향 언어입니다.";

String word = "java"; //검색어
if(content.toUpperCase().indexOf(word.toUpperCase())>-1) {

System.out.println("검색 결과: O");

}else {

System.out.println("결과x");

}

출력

대문자로 변환하여 결과가 올바르게 나오는 모습을 볼 수 있습니다.

substring

아까 말한 IndexOf보다 더 정확하게 범위를 지정하고 싶다면
substring을 사용하면 됩니다.

String jumin = "123456-1234567";

System.out.println(jumin.substring(0,2));

출력

자바에서 끝자리는 미포함으로 들어가므로 앞에 있는 12까지만 출력한 모습입니다.

replace

게임이나 커뮤니티 사이트에서 욕설을 사용 할 때 특수문자로 변형할 때 사용이 되거나 또는 검색어 정확도를 높이기 위해 앞 뒤에 빈칸을 지울때도 사용합니다

예시



String content = "뭐해 바보야";

String word = "바보";

//masking

System.out.println(content.replace(word, "**"));

출력

이렇게 해당하는 단어를 발견하면 ** 로 변환하도록 설정이 가능합니다.

'java' 카테고리의 다른 글

자바의 Class  (0) 2024.02.14
자바의 기본 성질  (1) 2024.02.14
자바의 배열 - 1 (Array)  (2) 2024.01.28
자바의 While문  (0) 2024.01.28
자바의 탈출 그리고 for 무한루프  (0) 2024.01.23