자바스크립트 문자열(String)에 대한 모든것 javaScript Strings
자바스크립트 문자열(String)에 대한 모든것 javaScript Strings
자바스크립트 string은 텍스트를 저장하고 다루기 위해 사용된다.
-javaScript Strings
자바스크립트 string은 "adam lee" 와 같은 문자들의 열을 간단하게 저장한다.
String은 따옴표(인용부호)안에 어떠한 텍스트도 쓸수 있다. 싱글('')과 더블("") 모두 사용 가능하다.
예)
var userName= "adam lee01"; //더블
var userName= 'brian lim02'; //싱글
물론 둘다 중복으로 사용도 가능하다.
예)
var answer = "It's alright";
var answer = "He is called 'Johnny'"; //출력결과 => He is called 'Johnny'
var answer = 'He is called "Johnny"'; //출력결과 => He is called "Johnny"
하지만 주의점이 있다. 아래의 예를 보자.
예)
var y = "We are the so-called "Vikings" from the north.";
위와같이 동일한 따옴표가 사용될 경우 자바스크립트는 문자열을 오해한다.
위의 y 값을 출력할 경우 원하지 않는 문자열이 출력될 것이다.
이 문제를 해결하는 방법은 '\' 를 사용하는 것이다. (이를 이스케이프 문자라한다.)
백슬레쉬는 특수문자를 String값으로 바꾼다.
var y = "We are the so-called \"Vikings\" from the north."
위 처럼 " 앞에 \를 붙이게 되면 뒤의 " 는 String으로 인식되어 올바르게 출력된다.
백슬래쉬(\) 를 사용하면 다른 특수문자 또한 삽입할 수 있다.
\를 사용해 추가할 수 있는 특수문자는 아래와 같다.
코드 | 결과 |
\' | 싱글 따옴표 |
\" | 더블 따옴표 |
\\ | 역슬래쉬 |
\n | 줄바꿈 |
\r | 캐리에이지 리턴 (커서를 그 줄 처음으로 이동) |
\t | 탭 |
\b | 백스페이스 |
\f | 폼피드 (한장 넘어가 출력) |
- String 문자열길이
문자열의 길이는 length 속성을 사용하여 알아낼 수 있다.(변수.length)
<script>
var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
document.getElementById("demo").innerHTML = txt.length; //출력결과 => 26
</script>
알파벳은 총 26개다..
- 너무 긴 코드를 자를 때 사용되는 백스페이스(\)
최고의 가독성을 위해 프로그래머는 종종 80자보다 더 긴 문자를 피하곤 한다.
만약 자바스크립트문이 한줄에 작성되지 않을 경우, 최고의 방법은 연산자 후에 줄을 바꾸는 것이다.
예)
document.getElementById("demo").innerHTML =
"Hello Dolly.";
맞게 출력된다. 하지만 아래의 경우 출력이 되지 않는다.
예)
document.getElementById("demo").innerHTML = "Hello
Dolly.";
이럴때 백슬레쉬를 사용하면 문자열이 출력된다.
예)
document.getElementById("demo").innerHTML = "Hello \
Dolly.";
하지만 이 방법은 자바스크립트 표준이 아니다.
몇몇 브라우저는 이게 작동 하지 않을 수 있다.
그래서 가장 안전한 (그러나 약간은 느린) 방법은 아래의 예와 같이 "+"를 사용하는 것이다.
예)
document.getElementById("demo").innerHTML = "Hello" +
"Dolly!";
코드라인은 \를 이용해 나눌수 없고, 오직 string만 가능하다는 것을 주의하자.!
document.getElementById("demo").innerHTML = \
"Hello Dolly!";
위 코드는 잘못된 사용임.
- String은 object가 될수 있다.
보통 자바스크립트 String은 literals로 부터 생성된 원초적인 값이다. var firstName = "adam"
하지만 String은 new키워드와 함께 오브젝트로 정의될 수도 있다. var firstName = new String("adam")
예)
var x = "adam"; //타입은 String
var y = new String("adam"); //타입은 Object
String을 object로 생성하지 마라. 이것은 실행속도를 느려지게 하고, 다루기 어려운 문제를 야기한다.
위의 x와 y를 비교해 보자.
x == y 는 true이다. 왜냐하면 x와 y는 같은 값을 가지고 있기 때문이다.
그럼 x === y 는? false이다. 왜냐하면 둘은 같은 값을 가지고 있지만 다른 타입이다.
typeof를 써서 변수의 타입을 보면 x는 string, y 는 object이다.
그리고 만약에 오브젝트 끼리 비교를 한다면
var x = new String("adam"); //타입은 Object
var y = new String("adam"); //타입은 Object
x == y 는 false이다. 자바스크립트에서 오브젝트 끼리는 비교할 수 없다.
- String 속성(properties)과 메소드(Methods)
속성(property) | 설명 |
constructor | Strng object의 prototype을 생성한 함수를 리턴 |
length | 문자열 길이를 리턴 |
prototype | 프로퍼티와 메소드를 object에 추가하는 것을 허용 |
mothod | 설명 |
charAt() | 지정한 인덱스에 해당하는 문자값 반환 |
charCodeAt() | 지정한 인덱스에 해당하는 문자값의 유니코드 반환 |
concat() | 문자열을 합쳐서 반환 |
fromCharCode() | 유니코드 값으로부터 문자값을 반환 |
indexOf() | 매개변수와 일치하는 문자열의 위치를 반환(정방향검색) |
lastIndexOf() | 매개변수와 일치하는 문자열의 위치를 반환(역방향검색) |
localeCompare() | 지역에 특화된 문자 순서를 사용하여 문자열을 다른 문자열과 비교한다. |
match() | 매개변수와 일치하는 문자열을 찾아서 반환 |
replace() | 문자열을 찾아 새로운 문자열로 변환 |
search() | 문자열을 찾아 몇번째 위치했는지 반환 |
slice() | 문자열의 시작과 끝을 받아 그 부분을 반환 |
split() | 문자열을 잘라 배열로 반환 |
substr() | 문자열을 잘라서 반환(시작, 몇번째까지) |
substring() | 문자열을 잘라서 반환(지정된 두 매개변수 사이값을) |
toLocaleLowerCase() | 호스트 환경의 현재 로케일을 고려하여 모든 영문자가 소문자로 변환된 문자열을 반환 |
toLocaleUpperCase() | 호스트 환경의 현재 로케일을 고려하여 모든 영문자가 대문자로 변환된 문자열을 반환 |
toLowerCase() | 모든 문자열을 소문자로 반환 |
toString() | 개체를 나타내는 문자열을 반환한다. |
toUpperCase() | 모든 문자열을 대문자로 반환 |
trim() | 문자열의 공백을 제거 |
valueOf() | 지정한 개체의 원시값을 반환한다. |