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() 메서드 등을 사용)
[자바 예시]
[자바스크립트 예시]
- 위 코드에서 str[1] = "E"는 문자열을 변경하지 않음, 단지 해당 인덱스에 값을 할당하려는 시도만 할 뿐
[파이썬 예시]
[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 클래스를 사용할 수 있음
[Python만의 독특한 기능]
1️⃣ MultipleLine : \n과 같은 기능을 함
2️⃣ 문자열 곱하기
※ 단 int 타입과 string 타입은 다르기 때문에 더하기 출력은 불가하다.
'용어 > Differences by language' 카테고리의 다른 글
[Python/JAVA/JS] 다차원 배열, 중첩 배열/리스트 (0) | 2024.06.26 |
---|---|
[Python/JAVA/JS] 자바/자바스크립트의 배열과 파이썬의 리스트, 문자열 관계 이해하기 (0) | 2024.06.26 |
[Python/Java/Js] 연산자 비교 (0) | 2024.06.25 |
[국비][JAVA/JS] 자바와 자바스크립트의 차이 (0) | 2024.05.27 |
[국비][JS/JAVA] 명명함수/익명함수 (0) | 2024.05.21 |