본문 바로가기

카테고리 없음

[나도코딩] 자바 코딩 강의 기본편 (문자열 - 길이, 대소문자 변환,포함 관계, 문자열 변환, 공백 제거, 결합, 비교, 특수문자)

<문자열>

 

문자열 변수 s 정의 

public static void main(String[] args) {
    String s = "I like Java and Python and C.";
    System.out.println(s);

 

문자열의 길이

 

* length

System.out.println(s.length()); // 29

 

대소문자 변환

 

* UpperCase : 대문자 변환

* LowerCase : 소문자 변환

System.out.println(s.toUpperCase()); // 대문자로
System.out.println(s.toLowerCase()); // 소문자로

 

 

포함 관계

 

* contains : 포함 되면 true, 포함되지 않으면 false

* indexOf : 문자열의 위치 정보 (문자열이 포함되지 않으면 -1)

* lastindexOf : 마지막 일치하는 위치 정보 

* startWith : 해당 문자열로 시작하면 true (아니면 false)

* endWith : 해당 문자열로 끝나면 true (아니면 false)

 

ex.

System.out.println(s.contains("Java")); // 포함된다면 true
System.out.println(s.contains("C#")); // 포함되지 않는다면 false
System.out.println(s.indexOf("Java")); // 위치 정보 7 (참고: 문자열의 위치는 0부터 시작)
System.out.println(s.indexOf("C#")); // 문자열이 포함되지 않으면 -1

System.out.println(s.indexOf("and")); // 처음 만나는 위치 정보
System.out.println(s.lastIndexOf("and")); // 마지막 일치하는 위치 정보

System.out.println(s.startsWith("I like")); // 해당 문자열로 시작하면 true (아니면 false)
System.out.println(s.endsWith(".")); // 해당 문자열로 끝나면 true (아니면 false)

 

 

문자열 변환 

 

문자열 변수 s 정의 

public static void main(String[] args) {
    String s = "I like Java and Python and C.";

 

* replace

 

System.out.println(s.replace(" and", ",")); // "and" 를 ","로 변환

 

-> I like Java, Python, C.

 

 

* substring 

 

System.out.println(s.substring(7)); // 인덱스 기준 7 부터 시작 (이전 내용은 삭제)

System.out.println(s.substring(s.indexOf("Java"))); // "Java" 가 시작하는 위치부터, "." 이 시작하는 위치 바로 앞까지
System.out.println(s.substring(s.indexOf("Java"), s.indexOf("."))); // 시작 위치부터 끝 위치 "직전" 까지

-> 

Java and Python and C.
Java and Python and C.
Java and Python and C

 

 

공백 제거

 

* trim : 앞뒤 공백 제거 

 

s = "            I love Java.         ";
System.out.println(s); //            I love Java.
System.out.println(s.trim()); // I love Java.

 

문자열 결합

 

* concat : 문자열 결합 

 

String s1 = "Java";
String s2 = "Python";
System.out.println(s1 + s2); // JavaPython
System.out.println(s1 + "," + s2); // Java,Python
System.out.println(s1.concat(",").concat(s2)); // Java,Python

 

문자열 비교

 

* equals : 문자열 비교

* equalsIgnoreCase : '대소문자 구분 없이' 문자열 내용 같은지 비교 

 

String s1 = "Java";
String s2 = "Python";

System.out.println(s1.equals(s2)); // 문자열 내용이 같으면 true, 다르면 false (false)
System.out.println(s1.equals("Java")); // true
System.out.println(s2.equals("python")); // false

System.out.println(s2.equalsIgnoreCase("python"));
// 대소문자 구분 없이 문자열 내용이 같은지 여부 체크 (true)

 

문자열 비교 심화

 

s1 = "1234"; // 벽에 붙은 메모지의 비밀번호 정보 (참조)
s2 = "1234";

// 벽에 붙은 메모지 '하나'만 가지고 비밀번호를 참조

System.out.println(s1.equals(s2)); // true (내용을 비교)
System.out.println(s1 == s2);// true (참조 하는 곳을 비교)

s1과 s2는 같은 곳을 참조 하기 때문에, 등호(==)로 비교했을 때 true 출력 

 

 

 

s1,s2를 다른 방식으로 선언 했을 경우 (new String)

s1 = new String("1234");
s2 = new String("1234");

// s1과 s2가 참조하는 곳이 각각 다름 (서로 다른 곳에 데이터가 존재)
// 각각의 서로 다른 메모지에다가 비밀번호를 적은 것임

System.out.println(s1.equals(s2)); // true
System.out.println(s1 == s2); // false

s1과 s2가 다른 곳을 참조하고 있기 때문에, 등호(==)로 비교했을 때 false 출력.

 

따라서, 일반적으로 자바에서 문자열의 내용을 비교할 땐 등호 대신 equals를 써야 한다.

 

 

특수문자, 이스케이프 문자

 

* \n : 줄바꿈 

 

System.out.println("자바가\n너무\n재밌어요");

->

자바가

너무

재밌어요

 

 

* \\ : 역슬래시

 

System.out.println("C:\\Program Files\\Java"); // C:\Program Files\Java

 

* \" : 큰따옴표

 

System.out.println("단비가 \"냐옹\"이라고 했어요"); // 단비가 "냐옹" 이라고 했어요

 

* \' : 작은따옴표

 

System.out.println("단비가 \'뭘 봐?\' 라는 표정을 지었어요"); // 단비가 '뭘 봐?' 라는 표정을 지었어요
System.out.println("단비가 '뭘 봐?' 라는 표정을 지었어요"); // 단비가 '뭘 봐?' 라는 표정을 지었어요

-> 같은 결과 값 출력

 

 

단, 캐릭터의 경우 ' '를 사용해 하나의 문자열을 저장하기 때문에  \'를 사용해야 한다. 

 

char c = 'A';
c = '\'';
System.out.println(c); // '

 

 

퀴즈

퀴즈3
주민등록번호에서 생년월일 및 성별까지만 출력하는 프로그램을 작성하시오

참고
- 주민등록번호는 13자리의 숫자로 구성
- 앞 6자리는 생년월일 정보, 뒷 7자리 중 첫 번째 숫자는 성별 정보
- 입력 데이터는 -을 포함한 14자리의 문자열 형태

예시
- "901231-1234567"인 경우 901231-1까지 출력
- "030708-4567890"인 경우 030708-4까지 출력

 

 

String id = "901231-1234567"; // 주민번호 13자리
System.out.println(id.substring(0, 8)); // 0 위치부터 8 위치 직전까지
id = "030708-4567890";
System.out.println(id.substring(0, id.indexOf("-") + 2)); // 0 위치부터 하이픈 위치 + 2 직전까지

->

901231-1
030708-4