[JS] 문자, 문자열

zinnnn37·2024년 5월 28일
0

🖥️ JavaScript

목록 보기
3/3

💬 문자

⛷️ ASCII Code

🔢 ASCII Code값 얻기: charCodeAt()

📍 해당 인덱스의 문자의 아스키코드를 반환한다

str.charCodeAt(index);
'A'.charCodeAt(0); // 65
'abcd'.charCodeAt(2); // 99

🔠 ASCII Code에 대응되는 문자 얻기: String.fromCharCode()

📍 입력한 아스키코드에 대응되는 문자를 반환한다

String.fromCharCode(65); // A
String.fromCharCode(97); // a

💯 ASCII Code 다루기

📍 주어진 문자를 ASCII Code로 변환한 후 +1을 한다
📍 이렇게 얻은 ASCII Code를 문자로 변환한다

let a = 'A';

x.charCodeAt(0);                          // 65
x.charCodeAt(0) + 1;                      // 66
String.fromCharCode(a.charCodeAt(0) + 1); // B

🎛️ 타입 변환

🔧 문자열을 숫자로 변환하기

1. Number()

📍 숫자가 아닌 문자가 포함된 경우 NaN이 반환된다

let a = '123';

Number(a);       // 123 (Number)
Number('123.5'); // 123.5
Number('a123');  // NaN

2. parseInt()

📍 문자열을 정수로 변환한다
📍 문자가 포함되는 경우
1) 가장 먼저 나오는 문자가 숫자인 경우 그 숫자를 변환한다(이하의 모든 문자는 무시)
2) 가장 먼저 나오는 문자가 문자인 경우 NaN을 반환하다

parseInt('123');	// 123
parseInt('123.5');	// 123
parseInt('123a');	// 123
parseInt('123.15a10'); // 123
parseInt('a123');   // NaN

3. parseFloat()

📍 문자열을 실수로 변환한다

parseFloat('123');		 // 123
parseFloat('123.5');	 // 123.5
parseFloat('123.15a');	 // 123.15
parseFloat('123.15a10'); // 123.15
parseFloat('a123.15');   // NaN

🔨 숫자를 문자열로 변환하기

let a = 123;
let b = 456.789;

a.toString();	// 123 (String)
a.toString(2);	// 1111011 (2진수)
b.toString();	// 456.789 (String)

연산자와 자료형

➕ 더하기 연산자

📍 숫자 덧셈과 문자열 연결을 담당한다
📍 피연산자가 하나라도 문자열인 경우 숫자를 문자열로 변환하여 계산한다

let a = 'A';

a + 1; // A1

공식문서에 따르면 문자열 변환을 위해 "" + x를 사용하는 것은 좋지 않다고 한다 (이유도 알려주세요)❇︎
❇︎ 아마.. 직관적이지 않아서 && null, undefined와의 연산 때문이지 않을까 추측해본다..

⭐️ 만약 문자열 형태의 숫자와 일반 숫자를 더하고 싶다면 문자열을 숫자로 변환한 후 연산을 진행한다

let n = '10';

n + 10; // 1010 (String)
Number(n) + 10; // 20

⚖️ 크기 비교 연산자

📍 문자열끼리 비교 가능하다
📍 사전순으로 나열했을 때 먼저 오는 문자열이 더 작은 수이다
📍 문자라면 숫자와도 비교 가능하다

let a = 'A';
let b = 'B';

a < b  // true
a > b  // false
a < 65 // false
a > 10 // true

⏺ 문자열과 숫자 비교는 정의되지 않은 것 같다.. 전부 false로 뜨는 듯

📍 이 점을 이용해 대소문자 여부를 쉽게 확인 가능하다

if ('A' <= x && x <= 'Z') console.log("Upper case");
else console.log("Lower case");

👯‍♀️ 동등비교연산자

📍 문자나 문자열끼리 비교 가능하다
📍 ASCII Code가 큰 쪽이 큰 값이다
📍 숫자와 문자간 비교의 경우 ==, === 모두 false가 뜬다
===: 값과 타입이 모두 같아야 true이므로 당연히 false
==: 암묵적 타입 변환을 통해 타입을 일치시키고 비교한 결과를 반환한다. 문자를 숫자로 변환하면 NaN이므로 false

console.log('a' === 'b')	  // false
console.log('a' == 65); 	  // false
console.log('a' === 65);	  // false
console.log("abc" === "abc"); // true

🧮 덧셈 이외의 연산자

📍 문자열인 피연산자를 숫자로 자동형변환한다.
📍 문자열에 숫자가 아닌 문자가 포함되어있다면 NaN(Not a Number)를 반환한다

let n = '10';

n - 5; //5
'a' - 5; // NaN

🔦 대소문자 변환

🐮 소문자 변환: toLowerCase()

📍 특정 문자열의 모든 문자를 소문자로 변환한 값을 반환한다

let s = 'Take Me Home';

s.toLowerCase(); // take me home

🎋 대문자 변환: toUpperCase()

📍 특정 문자열의 모든 문자를 대문자로 변환한 값을 반환한다

let s = 'Take Me Home';

s.toUpperCase(); // TAKE ME HOME

📝 문자열

🐍 문자열 길이 구하기: length

const s = 'take me home';

console.log(s.length);
// 12

🔎 문자열 내 요소 찾기: includes

📍 문자열 내 해당 요소가 있으면 true, 없으면 false를 반환한다

const s = 'take me home';

console.log(s.includes('e h'));
// true

📇 문자열 내 요소 위치 찾기: indexOf

📍 문자열에서 가장 먼저 나오는 요소의 첫 번째 문자의 위치를 반환한다
📍 찾지 못했다면 -1을 반환한다

const s = 'take me home';

console.log(s.indexOf('e h'));
// 6
console.log(s.indexOf('oh'));
// -1

⚗️ 부문자열 추출하기: slice

string.slice(start, end)

📍 start ~ end-1의 부문자열을 반환한다

const haystack = 'take me home';

console.log(haystack.slice(5, 7));
// me

📍 음수 인덱스도 사용 가능하다

const haystack = 'take me home';

console.log(haystack.slice(-5));
// home
console.log(haystack.slice(-5, -1));
// hom

📑 Reference

연산자와 자료형

profile
😎노션 상주 중,,😎

0개의 댓글