용어/Differences by language

[Python/JAVA] 문자열 비교

줌인. 2024. 6. 25. 22:35

1️⃣ 문자열의 길이 구하기

- a = "hello"

Python Java
len(string) : len() 함수를 사용 string.length() : String 클래스의 length() 메서드 사용
#문자열의 길이
a = "hello"
print(len(a))
String a = "hello";
System.out.println(a.length());

 

 

 

2️⃣ 문자열 인덱싱 

- a = "Life is too short, you need Python" ⇒ 'e' parsing

Python Java
string[index] : list 사용 string.charAt(index) : String 클래스의 charAt() 메서드 사용
#문자열 인덱싱과 슬라이싱
a = "Life is too short, You need Python"
print(a[3]) #단순 index 찾기
 //특정 위치 인덱스 찾기 --> -1 불가
String s = "Life is too short, You need Python";
System.out.println(s.charAt(3));

python은 java와 다르게 index를 찾을 때 -1로 찾을 수 있음 (맨 뒤에서 부터 찾을 수 있음)

 

2️⃣-1️⃣ 문자 인덱싱

Python Java
string.index(char) : String 객체에 내장된 index() 메서드 사용
string.find(char) : String 객체에 내장된 find() 메서드 사용
string.indexOf(char) : String 클래스의 indexOf() 메서드 사용
#index와 find의 차이 --> index는 반환할 수 없으면 오류 발생
a = "hobby"
print(a.index('o')) #해당되는 글자를 못찾을 경우 오류 발생
print(a.find('o')) #해당되는 글자를 못찾을 경우 -1반환
    //문자열 o의 위치 검색
    String a = "hobby";
    System.out.println(a.indexOf('o'));

 

 

 

3️⃣ 문자열 파싱 ⇒ 파이썬의 슬라이싱

- a = "Life is too short, you need Python" ⇒ 'Life' parsing

Python Java
string[start:finish] : 문자열 슬라이싱 사용 string.subString(start,finish)
:String 클래스의 subString() 메서드 사용
#문자열 추출
a = "Life is too short, you need Python"
b = a[:4] #0부터 ~ 4까지 : 문자열 슬라이싱
print(b)
//문자열 추출        
String s = "Life is too short, You need Python";
String s1 = s.substring(0,4);
System.out.println(s1);

 

 

 

4️⃣ 문자열 나누기

- a = "20230331 Rainy" (공백 기준)

Python 단독 사용 : '파이썬 슬라이싱'
string[start:finish] : 문자열 슬라이싱 사용
a = "20230331 Rainy";
b = a[:-5] #-5 전까지
c = a[-5:] #-5 이후부터
print("first : " + b)
print("second : " + c)
Python Java
string.split() : String 객체에 내장된 split() 메서드 사용 string.split("나눌 기준") : String 클래스의 split() 메서드 사용
a = "20230331 Rainy";
b = a.split()
print(b) #list화 출력
print("first : " + b[0])
print("second : " + b[1])
//문자열 나누기  
String a = "20230331 Rainy";
String [] ar = a.split(" ");
System.out.println("first : " + ar[0]);
System.out.println("second : " + ar[1]);

※ 파이썬에서 split()을 적용할 경우 : 기본은 공백을 기준으로 나눔

파이썬에서의 . 연산자는 자바에서와 유사하게 객체에 접근해서 객체의 속성(attribute)이나 메서드(method)를

    사용하는 데 사용

 

 

 

5️⃣ 문자열 일부 내용 변경

- a = "Life is too short, you need Python" ⇒ short(X), long(O)

Python Java
string.replace("기존", "신규") 
: String 객체에 내장된 replace() 메서드 사용
string.replace("기존","신규")
: String 클래스의 replace() 메서드 사용
#replace
a = "Life is too short, You need Python"
a = a.replace("short", "long")
print(a)
//문자열 변경    
String a = "Life is too short, you need Python";
a = a.replace("short", "long");
System.out.println(a);

 

5️⃣-1️⃣ 문자열 특정 문자 변경

Python Java
파이썬에서는 문자열 객체가 불변(immutable)이기 때문에
한 번 생성된 문자열은 수정할 수 없음
자바에서는 문자열 객체가 불변(immutable)이기 때문에
한 번 생성된 문자열은 수정할 수 없음
[문제해결] 문자열 슬라이싱과 문자열 연결로 새로운 문자 생성 [문제해결] 문자열의 특정 문자를 변경하려면
                 새로운 문자열을 만들어야함 + .subString()활용
#문자 변경
a = "pithon" #문자열 자체는 변경이 불가능함 -> 다만 슬라이싱 기법시 가능
print(a[0] + "y" + a[2:]) #새로운 문자열로 가능 **

#문자변경_불가 : string object는 자체적으로 변경이 불가함
a = "pithon"
#a[1] = 'y'
#print(a)

#문자열 슬라이싱을 통해 문제 해결 가능
print(a[:1] + 'y' + a[2:])
//문자열 중 일부 변경
String s = "pithon";
s = s.substring(0,1) + 'y' + s.substring(2);
System.out.println(s);

 

※ 불변객체(String ,str) 변경 관련 더 알아보기

자바, 자바스크립트, 파이썬 모두에서 문자열(String) 불변 객체
따라서 문자열 자체를 직접 변경하는 것은 불가능하며,
변경된 문자열을 얻기 위해서는 새로운 문자열을 생성
더보기

[문자열 비교]

  자바(String) 자바스크립트(String) 파이썬(str)
시퀀스 자료형 여부 X(불변 객체) O(유사 배열 객체) O
문자열 인덱스 접근 불가능
⇒ charAt() 사용
가능 가능
문자 변경 불가능(새로운 문자열 생성) 가능 불가능 (새로운 문자열 생성)
주요 메서드 charAt(), length(), subString() charAt(), length(), split() [index], len(), [start:end], split()

 파이썬/자바스크립트: 문자열은 시퀀스 자료형으로 간주되어 인덱스 접근 및 다양한 조작 가능

※ 자바: 문자열은 불변 객체로 취급되어 인덱스 접근 불가능 (대신 charAt() 메서드 등을 사용)

 

 

[자바 예시]

// 자바
String s = "hello";
char c = s.charAt(0);   // 'h'
String sub = s.substring(1, 4);  // "ell"

 

[자바스크립트 예시]

// 자바스크립트
let s = "hello";
let c = s[0];   // 'h'
let sub = s.slice(1, 4);  // "ell"
s[1] = 'E';    // "hEllo" (ES6 이후)

- 위 코드에서 str[1] = "E" 문자열을 변경하지 않음, 단지 해당 인덱스에 값을 할당하려는 시도만 할 뿐

 

[파이썬 예시]

# 파이썬
s = "hello"
c = s[0]   # 'h'
sub = s[1:4]  # "ell"

 

 

 

[Q. 시퀀스 자료형이란?]

시퀀스 자료형
데이터가 특정 순서대로 나열되어 있고, 각 데이터에 인덱스(번호)를 통해 접근할 수 있는 자료형

 

- 순서: 데이터의 순서가 정해져 있음

- 인덱스 접근: 각 데이터에 0부터 시작하는 인덱스로 접근 가능

- 길이: 데이터 개수 확인 가능

- 슬라이싱: 일부 데이터 추출 가능

 

 

 

6️⃣ 문자열 포매팅

Python Java
%(퍼센트) 연산자를 사용 System.out.printf() 메서드를 사용해 콘솔에 직접 출력
#문자열 포매팅
a = "my name is %s and i amd %d years old" %("john", 25)
print(a)
String name = "John";
int age = 25;
System.out.printf("My name is %s and i am %d years old", name, age);
#소수점 포매팅
a = "today discount %0.2f%%" %60.384324
print(a)
//소수점 포매팅
System.out.printf("today discount %.2f%%", 60.384324);

※ %s : 문자

※ %d : 숫자

※ %f : 소수점

 

6️⃣-1️⃣ 파이썬 문자열 포매팅 더 알아보기

숫자(순서) 대입 이름 대입
- 인덱스 기반 포매팅, {0} {1}  - 이름 기반 포매팅, {name} {age} 이름을 가진 자리 표시자
#숫자 바로 대입
a = "hello my name {0}! my age is {1}".format("john", 25)
print(a)
#이름 대입
a = "hello my name {name}! my age is {age}".format(age=25, name="john")
print(a)

 

 

 

7️⃣ 문자열 특정 문자 개수 세기

Python Java
string.count('찾을 문자') string.charAt(찾을 인덱스) 기반 코드 작성
#문자열 특정 문자 개수 세기
s = "hobby"
print(s.count("b"))
String s = "hobby";
int count = 0;
       
    for(int i=0; i < s.length(); i++) {
         if(s.charAt(i) == 'b') {
            count++;
            }
      }
System.out.println("count = " + count);

 

 

 

8️⃣ 문자열 합치기

Python Java
"추가할 문자".join("문자") String배열.join() : string에 내장된 join() 메서드 활용
#문자열 합치기
a = "abcd"
print(",".join(a))
String[] parts = {"a", "b", "c", "d"};
String result = String.join(",", parts);
System.out.println(result); // 출력: a,b,c,d

 

+ StringBuffer/Builder 이용

  : 자바에서 문자열을 동적으로 추가하고 합치는 데에는 StringBuilder 또는 StringBuffer 클래스를 사용할 수 있음

        StringBuilder sb = new StringBuilder();
        sb.append("a").append(",").append("b").append(",").append("c").append(",").append("d");
        String result = sb.toString();
        System.out.println(result); // 출력: a,b,c,d

 


 

[Python만의 독특한 기능]

1️⃣ MultipleLine : \n과 같은 기능을 함

      a ="""
       Life is too short
       You need python
       """
       print(a)  

 

2️⃣ 문자열 곱하기

       #문자열 곱하기
       a = "hello"
       print(a * 50)
       # hello가 50번 반복 출력

※ 단 int 타입과 string 타입은 다르기 때문에 더하기 출력은 불가하다.

728x90