문자열
문자의 표현
컴퓨터에서의 문자 표현
- 글자 A를 저장하기 위해 임의의 비트로 변경해서 표현
- 영어의 경우 대소문자를 포함해 6비트면 모두 표현 가능
- 초기에는 각 지역 별로 코드체계를 다르게 사용 → 이후 이를 해결하기 위해 표준 인코딩인 ASCII가 생김
- 확장 아스키 :표준 문자 이외의 악센트 문자, 도형 문자, 특수 문자, 특수 기호 등 부가적인 문자를 128개 추가할 수 있게 하는 부호
- 컴퓨터 생산자와 소프트웨어 개발자가 여러 가지 다양한 문자에 할당할 수 있도록 하고 있다.
- 미국 이외에도 다양한 나라에서 컴퓨터가 발전했고, 각 나라별로 코드체계가 발전했고 이를 처리하기 위해 유니코드가 생성
유니코드
- UCS-2
- UCS-4
- 유니코드를 저장하는 변수의 크기를 정의했지만 바이트 순서에 대해서 표준화 X
- 각각을 다르게 구현해야 했기에 적당한 외부 인코딩 필요
유니코드 인코딩
- UTF-8
- MIN: 8bit, MAX: 32bit(1 Byte * 4)
- UTF-16
- MIN: 16bit, MAX: 32bit(2 Byte * 2)
- UTF-32
- MIN: 32bit, MAX: 32bit(4 Byte * 1)
Python 인코딩
- 2.x 버전 - ASCII -> #-- coding:utf-8-- (첫 줄 명시)
- 3.x 버전 - 유니코드 UTF-8
문자열의 분류

[출처]https://velog.io/@yun12343/Algorithm-String-0217
C언어에서 문자열 처리
- 문자열은 문자들의 배열 형태로 구현된 응용 자료형
- 문자배열에 문자열을 저장할 때는 항상 마지막 끝을 표시하는 널문자를 넣어야 한다.
- char ary [] ={'a','b','\n'}; Or char ary[] = "ab";
- 문자열 처리에 필요한 연산을 함수 형태로 제공
- strlen(), strcmp(), strcpy()
Java에서의 문자열 처리
- 문자열 데이터를 저장, 처리하는 클래스 제공
- String 클래스 사용
- String str ="abc"; Or String str = new String("abc")
- 문자열 처리에 필요한 연산을 연산자, 메소드 형태로 제공
- +, length(), replace(), split(), substring()
Python에서의 문자열 처리
- char 타입 없음
- 텍스트 데이터의 취급방법이 통일
- 문자열 기호
- 문자열 + 문자열 : 이어 붙여주는 역할
- 문자열 * 수 : 수만큼 문자열이 반복
- 문자열은 시퀀스 자료형으로 분류되고, 시퀀스 자료형에서 사용할 수 있는 인덱싱, 슬라이싱 연산들을 사용가능
- 제공 메소드
- replace(), split(), isalpha(), find()
- 요소 값 변경이 불가
C, JAVA, Python 차이점
| C | Java | Python |
|---|
| 아스키 코드로 저장 | 유니코드(UTF16, 2byte)로 저장 | 유니코드(UTF8)로 저장 |
char * name = "홍길동"; int count = strlen(name); printf("%d", count) # 6 | String name = "홍길동"; System.out.printlen(name.length()); # 3 | name = "홍길동" print(len(name)) # 3 |
문자열 비교
- c strcmp() 함수를 제공
- Java에서는 equals() 메소드를 제공한다
- 문자열 비교에서 == 연산은 메모리 참조가 같은지를 묻는 것이다.
- 파이썬에서는 == 연산자와 is 연산자가 제공한다
- == 연산자는 내부적으로 특수 메서드 eq()를 호출
Ex) C_language
int my_strcmp(const char *str1. const char *str)
{
int i = 0;
while(str[i] != '\n)
{
if(str[i] != str2[i]) break;
i++;
}
return (str1[i] - str2[i]);
}
문자열 숫자를 정수로 변환하기
| C | java | Python |
|---|
atoi() itoa() # 역함수 | parse → Integer.parselnt(String) toString() # 역함수 | 숫자와 문자변환 함수를 제공 |
def atoi(s):
i = 0
for x in s:
i = i*10 + ord(x)-ord('0')
return i
s = '123'
a = atoi(s)
print(a+1)
패턴매칭