JAVA _기초

[JAVA] 문자열 (String)

Journey Jeong 2023. 2. 15. 20:12

 

01. 문자열과 배열의 비교 

 

예제

package string;

public class StringTest01 {

	public static void main(String[] args) {
		
		// " ㅇㅇㅇ " : 문자열, 상수 
		String str="문자열";
		char[] strs={'문','자','열'}; 
		
		System.out.println("문자열길이 : " + str.length()); //길이정보를 알 수 있는 메서드 
		System.out.println("배열의길이 : " + strs.length);  //길이정보를 알 수 있음  
		
		char ch= str.charAt(0); //한글자씩 추출함 //문:0, 자:1, 열:2 
		System.out.println(ch);
		char[] strs2 = str.toCharArray(); //문자열을 문자타입 배열로 만든다. 
		for(int i=0; i< strs2.length; i++) {
			System.out.print(strs[i]);
		}
		
	}
}

 

02. 문자열 값 비교 

: x.equals() 

메모리 저장 공간에 의해  == 보다는 x.equals() 를 통해 하는 것이 더 정확함 

해시코드가 다르더라도 equals 를 통해 비교 하면 됨 

 

예제 

package string;

public class StringTest02 {

	public static void main(String[] args) {
		
		// 문자열 입력 방법 
		String str1= "홍길동"; // 첫번째 방법, 기본 방법 //문자열 상수형 변수 
        //상수: 변하지 않는 수 , 공유 목적이기에 여러개 만들지 않고 1개만 만듬 
        // static 메모리에서 관리 
		String str2= new String("홍길동") ; // 두번째 방법, 생성자로 할당  
        //객체형 변수 // NEW = 힙메모리에 만듬 
		
		// 표현식에 따른 문자열 동일함 비교  
		String str3= "홍길동"; 
		String str4= new String("홍길동");
		
		System.out.println(str1==str2); //false가 나옴 
		System.out.println(str1==str3); //true가 나옴
		System.out.println(str2==str4); //false가 나옴 
		// 비교하는 두 변수가 상수필드로 초기화 한 변수일때만 true 임 
		// == : 문자열 비교시 단순비교로 저장된 값이 아니다. 
		
		
		System.out.println("----------");
		
		StringTest02 obj=new StringTest02();
		System.out.println(obj); // string.StringTest02@515f550a
		System.out.println(str1.equals(str2)); //true 
		System.out.println(str1.equals(str3)); //true
		System.out.println(str2.equals(str4)); //true 
		//문자열 실제 값(데이터)를 비교하고 싶을 때는 ".equals"라는 메서드를 활용하기 
		
	}

}

 

03. 문자열 추출하기 

 

방법 1>   변수.substring(x,y)

방법 2>   변수.indexOf() 

방법 3>   변수.lastIndexOf() 

방법 4>   변수.spilt()

 

예제. 

package string;

import java.util.UUID;

public class StringTest03 {

	public static void main(String[] args) {
		
				   //0123456789012
		String str1="031-5600-1234";
		String str2="02-5600-4321 ";
		
		// 01. 문자열 추출하기 : x.substring(i,y)
		System.out.println(str1.substring(0,3)); //031 // 0부터 3이전 자리까지 즉 0~2
		System.out.println(str1.substring(4,8)); //5600 // 4~7 
		System.out.println(str1.substring(9));  //1234 // 9~끝까지 
		
		System.out.println(str2.substring(0,2)); //02
		System.out.println(str2.substring(3,7)); //5600 
		System.out.println(str2.substring(8));  //4321
		
		System.out.println("--------------");
		
		// 파일: 파일이름. 확장자
		// 특정한 단어를 찾아서, 파일명과 확장명 분리 방법  : indexOf()
					  // 0123456
		String fileName="aaa.jpg";
		System.out.println("'.'의 위치: " + fileName.indexOf('.')); //3 //'.'의 위치를 숫자로 찾아줍니다.
		
		int x=fileName.indexOf('.');
		System.out.println(fileName.substring(0,x)); // aaa
		System.out.println(fileName.substring(x));//.jpg 
		
		
		String newName= UUID.randomUUID().toString();
		fileName= newName+fileName.substring(x); // 랜덤한 이름을 만들어줍니다. 
		System.out.println("새로운 파일이름 : " + fileName); //4cf6269f-ba2e-4772-9250-18b6ace9d7a3.jpg
		
		//02. 마지막 '.' 찾는 방법 : .lastIndexOf() 
				 //012345678901234567890123
		fileName= "01234567890.23456789.jpg";
		System.out.println(fileName.lastIndexOf(".")); //20
		int y=fileName.lastIndexOf('.');
		System.out.println(fileName.substring(0,y)); // 
		System.out.println(fileName.substring(y));//.jpg 
	
		System.out.println("--------------");
		
		
		//03. 배열 index 번호로 쪼개기 : .split() 
		fileName="aaaabbb.gif";
		
		String[] strs= fileName.split("[.]");
		// () 의 기준으로 문자열을 쪼갠다. 
		System.out.println(strs.length); //2 //'aaaabbb' & '.gif' 이렇게 두개  
		
		System.out.println("--------------");
		
		for(int i=0; i<strs.length; i++) {
			System.out.printf("확장명 strs[%d] = %s\n", i, strs[i]);
		}
		
		String phone = "02-1234-5678";
		strs=phone.split("[-]"); // - 기준으로 쪼개기 
		for(int i=0; i<strs.length; i++) {
			System.out.printf("번호 strs[%d] = %s\n", i, strs[i]);
		}

 

 

04. 문자열 변환 방법

: x.append() 

 

예제 1. ' - ' -> '~ '  

String phone = "02-1234-5678";
		strs=phone.split("[-]"); // - 기준으로 쪼개기 
		for(int i=0; i<strs.length; i++) {
			System.out.printf("번호 strs[%d] = %s\n", i, strs[i]);
		}
		
		System.out.println(" ---------------- ");

		StringBuilder sb=new StringBuilder();
		for(int i=0; i<strs.length ; i++) {
			sb.append(strs[i]);
			if(i==strs.length-1)continue;
				sb.append("*"); 	
		}
		System.out.println(sb.toString()); // 문자열로 변환  
		//02*1234*5678

예제 2.  '\ \' -> '\ '  

		String path= "E:\\ncs2023\\tools\\eclipse"; 
		// java 에서는 \를 \\개로 해야 파일경로를 표현할 수 있음 
		// E:/ncs2023/tools/eclipse 윈도우에서는 이렇게도 동일하게 표현 할 수 있음
		System.out.println(path.replaceAll("[/]", "-"));

 

05. 공백제거하기 

: x.trim()

//제일많이 사용하는 것 
		//회원 가입 시 3글자 이상만 가능합니다. 단 공백은 글자로 처리하지 않도록 해주세요 
		String name="  홍길동  ";
		System.out.println(name.length());//7
		System.out.println(name.trim().length()); //3
		//trim: 문자열에 공백을 제거하는 것 
		//name.trim();