본문 바로가기
Kosta DevOps 과정 280기/Java

문자열

by 롯슈83 2024. 5. 27.
  • 변하지 않는 문자열
  • 변하는 문자열을 쓸 때는 StringBuffer 나 StringBuilder 등을 사용한다.

메소드

  • char a = s.charAt(Index)
    • 문자열에서 n번째 문자 뽑기
package com.kosta.exam01;

public class CharAtTest {

	public static void main(String[] args) {
		String data = "hello java";
		String year = "2024";
		
		char a = data.charAt(0);
		int c2 = year.charAt(0);
		int c3 = (int)year.charAt(0);
		int c4 = Integer.parseInt(year.charAt(0)+"");
		System.out.println(a);
		System.out.println(c2);
		System.out.println(c3);
		System.out.println(c4);
	}
}
  • int len = s.length();
    • 문자열 길이 반환
package com.kosta.exam01;

public class CharAtTest2 {
	public static void main(String[] args) {
		int n = 0;
		String data = "hello java";
		System.out.println(data.length());
		for(int i = 0; i < data.length(); i++) {
			char ch = data.charAt(i);
			if(ch == 'a')
				n++;
		}
		System.out.println(n);
	}
}
  • boolean a = s1.equals(s2);
    • 문자열이 같은지 확인
package com.kosta.exam01;

import java.util.Scanner;

//사용자한테 아이디와 암호를 입력받아서 올바른지 판별하는 프로그램
//(아이디 : kosta, 암호 : 1234)
public class CharAtTest2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String id = "kosta";
		String pw = "1234";
		System.out.print("아이디 ==> ");
		String ansId = sc.next();
		System.out.print("비밀번호 ==> ");
		String ansPw = sc.next();
		if(ansId.equals(id) && ansPw.equals(pw))
			System.out.println("어서오세요!");
		else
			System.out.println("아이디와 비번 확인 필요");
	}
}
  • boolean b = s1.equalsIgnoreCase()
    • 대소문자 구분 없이 같나 비교
package com.kosta.exam01;

import java.util.Scanner;

//사용자한테 아이디와 암호를 입력받아서 올바른지 판별하는 프로그램
//(아이디 : kosta, 암호 : 1234)
public class EqualsTest2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String id = "kosta";
		String pw = "1234";
		System.out.print("아이디 ==> ");
		String ansId = sc.next();
		System.out.print("비밀번호 ==> ");
		String ansPw = sc.next();
		if(ansId.equalsIgnoreCase(id) && ansPw.equals(pw))
			System.out.println("어서오세요!");
		else
			System.out.println("아이디와 비번 확인 필요");
	}
}
  • String s2 = s1.toUppercaseCase(); //String s2 = s1.toLowerCase();
    • 문자열을 대문자// 소문자로 전부 변경하여 반환
package com.kosta.exam01;

import java.util.Scanner;

//사용자한테 아이디와 암호를 입력받아서 올바른지 판별하는 프로그램
//(아이디 : kosta, 암호 : 1234)
public class EqualsTest3 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String id = "kosta";
		String pw = "1234";
		System.out.print("아이디 ==> ");
		String ansId = sc.next();
		System.out.print("비밀번호 ==> ");
		String ansPw = sc.next();
		
		
		//메소드 체이닝 -> 메소드 연결해서 동작
		if(ansId.toLowerCase().equals(id) && ansPw.toUpperCase().equals(pw))
			System.out.println("어서오세요!");
		else
			System.out.println("아이디와 비번 확인 필요");
	}
}
  • trim() : String s2 = s1.trim();
    • 문자열 앞 뒤 공백을 제거하여 반환
package com.kosta.exam01;

public class TrimTest {
	public static void main(String[] args) {
		String data = "   hello my name is choimorae	";
		System.out.println(data.length());
		System.out.println("|"+data+"|");
		String data2 = data.trim(); 
		System.out.println(data2.length());
		System.out.println("|"+data2+"|");
	}
}
  • String s = String.valueOf(바꿀 다른 자료형 변수 등);
    • 다른 자료형을 모두 문자열로 바꿔준다.
    • 쉽게 + ""을 해도 바뀐다. 단 아까의 문자로 된 배열은 바뀌지 않는다. 
package com.kosta.exam01;

public class ValueOfTest {
	public static void main(String[] args) {
		int year = 2024;
		String data_year = String.valueOf(year);
		double height = 56.7;
		String data_height = String.valueOf(height);
		boolean flag = false;
		String data_flag = String.valueOf(flag);
		
		char[]arr = {'h','e','l','l','o'};
		String data_arr = String.valueOf(arr);
		
		System.out.println(data_year);
		System.out.println(data_height);
		System.out.println(data_flag);
		System.out.println(data_arr);
	}
}
  • int n = s1.indexOf(s2);
    • String 을 매개변수를 주면 그 String 이 위치하는 인덱스를 준다. 단, 없으면 -1을 준다.
  • int n = s3.indexOf(s4, n);
    • String과 int n 을 매개변수를 주면 그 n부터 해당 문자열을 찾게 된다.
package com.kosta.exam01;

public class IndexOfTest {
	public static void main(String[] args) {
		String data = "hello java";
		int n = data.indexOf('e');
		System.out.println(n);
	}
}
package com.kosta.exam01;

public class IndexOfTest2 {

	public static void main(String[] args) {
		String data = "hello java hello oracle";
		int n  = data.indexOf("e", 2);
		System.out.println(n);
		
	}
}
  • int n = s.lastIndexOf(int ch)
    • 뒤에서부터 찾아 위치를 반환하는 함수
package com.kosta.exam01;

public class LastIndexOf {
	public static void main(String[] args) {
		String data = "java";
		int n1 = data.indexOf('a');
		int n2 = data.lastIndexOf('a');
		System.out.println(n1);//1
		System.out.println(n2);//3
	}
}
  • String s2 = s1. substring(num1, num2)
    • s1 문자열을 num1 부터 num2 까지 잘라서 문자열을 반환한다.
    • 단, num 1은 포함하지만(inclusive) num2는 포함하지 않는다.(exclusive)
    • num2를 적지 않을 경우 num1부터 끝까지 문자열을 반환한다.
package com.kosta.exam01;

public class substringTest {
	public static void main(String[] args) {
		String data = "hello java";
		String str1 = data.substring(1, 7);
		
		System.out.println(str1);
		System.out.println(data.substring(1));
	}
}

 

  • boolean n = s1.startsWith(s2)
    • s1 문자열이 s2로 시작하는지 검사하고 boolean값을 리턴
  • boolean n = s1.endsWith(s2)
    • s1 문자열이 s2로 끝나는지 검사하고 boolean값을 리턴
package com.kosta.exam01;

public class StartWithEndsWith {

	public static void main(String[] args) {
		String data = "hello java";
		boolean flag1 = data.startsWith("hello");
		boolean flag2 = data.endsWith("java");
		boolean flag3 = data.endsWith("oracle");
		
		System.out.println(flag1);
		System.out.println(flag2);
		System.out.println(flag3);	
	}
}
  • s2 = s1.replace(str1, str2)
    • 문자열에 포함된 str1을 str2로 바꿈
package com.kosta.exam01;

public class replaceTest {
	public static void main(String[] args) {
		String data = "hello java hello oracle";
		String data2 = data.replace("hello", "안녕");
		System.out.println(data);
		System.out.println(data2);
	}
}
  • replaceAll--> replace 에서 정규표현식도 쓸수 있는것
package com.kosta.exam01;

public class replaceTest {
	public static void main(String[] args) {
		String data = "hello java hello oracle";
		//String data2 = data.replace("hello", "안녕");
		String data2 = data.replaceAll(".", "안녕");
		System.out.println(data);
		System.out.println(data2);
	}
}
  • boolean s = s.contains(str)
    • 문자열이 포함되어있는지 확인
package com.kosta.exam01;

//문자열 데이터에 java를 포함하고 있는지 확인
public class indexOfContains {
	public static void main(String[] args) {
		String data = "hello java hello oracle";
		if(data.contains("java")){
			System.out.println("자바 포함");
		}else {
			System.out.println("자바 포함 안함");
		}
	}
}
  • String []arr = s.split(String regex)
    • 정규표현식 또는 일반 문자열을 기준으로 잘라서 문자열 배열로 반환한다.
package com.kosta.exam01;

public class SplitTest {
	public static void main(String[] args) {
		String data = "홍석영,임유나,변시우,조영흔,유요한";
		String []arr = data.split(",");
		for(String s: arr)
			System.out.println(s);
	}
}

 

  • StringTokenizer: 분리 담당 클래스(java.util에 존재한다. )
    • 위의 split 메소드는 String 의 메소드이며 문자열을 특정 문자로 분리하여 배열을 반환하는 메소드입니다. 이러한 문자열을 분리하는 기능은 상당히 많이 이용되어집니다.
    • 위의 방법처럼 문자열을 분리할 수도 있고 문자열 분리 담당하는 StringTokenizer를 이용하여 문자열을 분리할 수도 있어요
    • import java.util.StringTokenizer;
    • StringTokenizer st = new StringTokenizer(data, " ");
    • 분리된 데이터(값) 하나하나를 토큰이라고 불러요.
    • 보통은 토큰이 있는만큼 반복 실행한다.
    • 토큰을 하나씩 꺼내오는 메소드가 nextToken();
    • 토큰이 있는지 판단을 또 해줘야 한다. 
    • 매개변수
      • 1: 어떤 문자열로 처리할건지
      • 2: 기본적으로는 공백(매개변수 안준거)  
      • 3: 분리한 글자를 어떤 것으로 연결해서 토큰으로 만들기
package com.kosta.exam01;

import java.util.StringTokenizer;

public class SplitTestStringTokenizer {

	public static void main(String[] args) {
		String data = "홍석영 임유나 변시우 조영흔 유요한";
		StringTokenizer st = new StringTokenizer(data);
		System.out.println(st.nextToken());
		while(st.hasMoreTokens()) {
			System.out.println(st.nextToken());
		}
	}
}

'Kosta DevOps 과정 280기 > Java' 카테고리의 다른 글

문자열 처리  (0) 2024.05.28
정규표현식  (0) 2024.05.27
파일 입출력  (0) 2024.05.24
난수  (0) 2024.05.23
동적인 배열 Set, List, Map  (0) 2024.05.23