TIL_22_with Wecode 012 JavaScript about String

JIEUNยท2021๋…„ 2์›” 21์ผ
0
post-thumbnail

๐Ÿฆง String ํŒŒํ—ค์น˜๊ธฐ!
์Œ๋”ฐ์˜ดํ‘œ๋“ , ํ™‘๋”ฐ์˜ดํ‘œ๋“  ๋ชจ๋‘ Stringํ˜• ๊ฐ’์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

let good = '์ด๊ฒƒ๋„ ๋งž๊ณ ';
let better = "์ด๊ฒƒ๋„ ๋งž์Šต๋‹ˆ๋‹ค";

๐Ÿค— ๋Œ€์†Œ๋ฌธ์ž ๋ฐ”๊พธ๊ธฐ
Stringํ˜•์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋ณธ ํ•จ์ˆ˜๋“ค์ด ๋งŽ์€๋ฐ ๋Œ€ํ‘œ์ ์œผ๋กœ ์•Œ์•„์„œ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๋ฐ”๊ฟ”์ฃผ๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
JavaScript String Reference

console.log('js' === 'js'); // true
console.log('Js' === 'js'); // false

๊ฒฐ๊ณผ์—์„œ ๋ณด๋“ฏ์ด String์˜ ๋Œ€์†Œ๋ฌธ์ž๊ฐ€ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.
์›น์‚ฌ์ดํŠธ์— ๊ฒ€์ƒ‰๊ธฐ๋Šฅ์ด ์žˆ๋Š” ๊ฒฝ์šฐ "Js"๋ผ๊ณ  ๊ฒ€์ƒ‰ํ–ˆ์„ ๋•Œ,
J๊ฐ€ ์ •ํ™•ํžˆ ๋Œ€๋ฌธ์ž์ธ ๊ฒƒ๋งŒ ์ฐพ์•„์ฃผ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ
๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์—†์ด "js"๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ํฌํ•จ๋œ ๋ชจ๋“  ์ปจํ…์ธ ๋ฅผ ์ฐพ๊ณ  ์‹ถ์„ ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด ์ž„์˜์˜ String์„ ์ž‘์„ฑํ•˜๊ณ  toUpperCase์™€ toLowerCaseํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฐ’์„ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค.

let lastName = "Jieun Yang";
let upperLastName = lastName.toUpperCase();
let lowerLastName = lastName.toLowerCase();
lastName
//"Jieun Yang"
upperLastName
//"JIEUN YANG"
lowerLastName
//"jieun yang"

lastName ์ด๋ผ๋Š” ๋ณ€์ˆ˜์— Stringํ˜•์˜ ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด
lastName ๋ณ€์ˆ˜๋Š” Stringํ˜•์˜ ๋ณ€์ˆ˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
toUpperCase์™€ toLowerCaseํ•จ์ˆ˜๋Š” String์—์„œ ์ œ๊ณตํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  console์—์„œ ํ™•์ธํ•œ ๊ฒƒ๊ณผ ๊ฐ™์ด,
lastName์— toUpperCaseํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  lastName ๋ณ€์ˆ˜์˜ ๊ฐ’ ์ž์ฒด๊ฐ€ ๋ฐ”๋€Œ์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค.
lastName์€ ์ด์ „ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿค— ๋ฌธ์ž ๊ธธ์ด
๋ฌธ์ž์ธ Stringํ˜•๋„ length๋ผ๋Š” ์†์„ฑ์œผ๋กœ ๊ธธ์ด๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ์ œ๋Š” ํฐ ๋ฒˆํ˜ธ(phoneNumber)๊ฐ€ 10์ž๋ฆฌ๋„ ์•„๋‹ˆ๊ณ  11์ž๋ฆฌ๋„ ์•„๋‹ˆ๋ฉด alert๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

if (phoneNumber.length !== 10 &&
    phoneNumber.length !== 11) {
  alert("ํฐ ๋ฒˆํ˜ธ ์ œ๋Œ€๋กœ ์ž…๋ ฅํ•˜์…จ๋‚˜์š”?");
}
let name = prompt("์„ฑํ•จ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”")
if (name.length === 2) {
  alert("์™ธ์ž์ด์‹œ๊ตฐ์š”! ์ด๋ฆ„์ด ์ด์˜๋„ค์š”.")
} else if (name.length === 1) {
  alert("์ œ๋Œ€๋กœ ์ž…๋ ฅํ•˜์…จ๋‚˜์š”?")
} else if (name.length === 3) {
  alert("๋ฉ‹์ง„ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.");
} 

์ฐธ๊ณ .
0์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ˆซ์ž ํ‘œํ˜„์‹์€ ์—†์Šต๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ํ•ธ๋“œํฐ ๋ฒˆํ˜ธ๋Š” ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์ง€๋งŒ,
๋ฌธ์ž์—ด๋กœ ๊ด€๋ฆฌํ•ด์•ผ ์ปดํ“จํ„ฐ๊ฐ€ ์ฒซ ์ˆซ์ž์ธ "0"๋„ ๊ฐ–๊ณ  ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

let phoneNumber = 01012341234;
phoneNumber
//136954524
phoneNumber.length
//๊ฒฐ๊ณผ ์—†์Œ.

์ด์™€ ๊ฐ™์ด phoneNumber๋Š” Numberํ˜•์ด๋ฉฐ, ์•ž์˜ 0์ด ์—†์ด ๋’ท ์ˆซ์ž๋งŒ ํ• ๋‹น๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ Numberํ˜•์—๋Š” length๋ผ๋Š” ์†์„ฑ์ด ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (length ๋Š” ์ŠคํŠธ๋ง์—์„œ ๊ฐ€์ง€๋Š” ์†์„ฑ์ด๋ฏ€๋กœ.)

let phoneNumber = "01012341234";
phoneNumber
//"01012341234"
phoneNumber.length
//11

๐Ÿค— ๋ฌธ์ž์—ด ์ฐพ๊ธฐ

let info = "JavaScript๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋‹ค.";

์œ„์˜ ์„ค๋ช…์— "ํ”„๋กœ๊ทธ๋ž˜๋ฐ"์ด๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ํฌํ•จ๋๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
indexOf() ํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด์— ํŠน์ • ๋ฌธ์ž์—ด์ด ๋“ค์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ ,
๋งŒ์•ฝ ์žˆ๋‹ค๋ฉด ๋ช‡๋ฒˆ ์งธ ์ˆœ์„œ์— ํ•ด๋‹น ๋ฌธ์ž์—ด์ด ์žˆ๋Š”์ง€ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
ํ•ด๋‹น ๋ฌธ์ž์—ด์ด ์—†๋‹ค๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

let info = "JavaScript๋Š” ํ”„๋กœ๋ž˜๋ฐ ์–ธ์–ด์ด๋‹ค.";
let firstChar = info.indexOf("ํ”„๋กœ๋ž˜๋ฐ"); 
console.log(info, firstChar);
if (firstChar !== -1) { 
  info = info.slice(0, firstChar) + 
    "ํ”„๋กœ๊ทธ๋ž˜๋ฐ" + info.slice(firstChar+4, info.length); 
}
console.log(info);
//๊ฒฐ๊ณผ "JavaScript๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋‹ค."
  1. info ๋ฌธ๊ตฌ์—์„œ "ํ”„๋กœ๋ž˜๋ฐ"์ด ์‹œ์ž‘๋˜๋Š” index๋Š” 12์ž…๋‹ˆ๋‹ค.
  2. ifย (firstChar !== -1)
  • firstChar์ด -1์ด ์•„๋‹ˆ๋ฉด
  • = "ํ”„๋กœ๋ž˜๋ฐ"์ด๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ์—†์ง€ ์•Š๋‹ค๋ฉด
  • = "ํ”„๋กœ๋ž˜๋ฐ"์ด๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ์žˆ๋‹ค๋ฉด
  • = "ํ”„๋กœ๋ž˜๋ฐ" ๋ฌธ๊ตฌ๋Š” 12๋ฒˆ์งธ์—์„œ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ firstChar๋Š” 12 ์ด๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค.
    "ํ”„๋กœ๋ž˜๋ฐ"์ด๋ผ๋Š” ์˜คํƒ€๊ฐ€ ํฌํ•จ๋˜์–ด์žˆ์œผ๋ฉด if๋ฌธ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  1. info.slice(0, firstChar)
    slice๋Š” ์ด๋ฆ„๊ทธ๋Œ€๋กœ ํ…์ŠคํŠธ๋ฅผ ์ž˜๋ผ์ฃผ๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
slice(์ž˜๋ฆด ์‹œ์ž‘์œ„์น˜, ์ž˜๋ฆด ๋์œ„์น˜)

๋ฌธ๊ตฌ์˜ ์ฒซ ๋ฒˆ์งธ ๊ฐ’์€ 0์ž…๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ info ๋ฌธ๊ตฌ์˜ 0๋ถ€ํ„ฐ 12๋ฒˆ์งธ๊นŒ์ง€ ์ž˜๋ผ์„œ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์ž˜๋ฆด ๋์œ„์น˜๊ฐ€ ์กฐ๊ธˆ ํ—ท๊ฐˆ๋ฆฌ๋Š”๋ฐ, 12๋ฒˆ์งธ์˜ ๋ฌธ๊ตฌ๋Š” "ํ”„"์ž…๋‹ˆ๋‹ค.
12๋ฒˆ์งธ๊ฐ€ ๋ ๋งž๋Š”๋ฐ ํ•ด๋‹น ๋ฌธ์ž๋Š” ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋ฐ”๋กœ ๊ทธ ์ง์ „์—์„œ ๋Š์–ด์ค๋‹ˆ๋‹ค.

console.log(info.slice(0, firstChar));
  1. info.slice(firstChar+4, info.length);
    info์˜ 16๋ฒˆ์งธ์ธ "์–ธ" ์ด์ „์˜ ์ŠคํŽ˜์ด์Šค๋ถ€ํ„ฐ info์˜ ๊ธธ์ด(+4)์ธ 22๋ฒˆ์งธ๊นŒ์ง€ ์ž๋ฅด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
    22๋ฒˆ์งธ๋Š” ๋ฌธ์ž๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์ง€๋งŒ,
    ๊ทธ ์ง์ „์— ๋Š์œผ๋‹ˆ "."๊นŒ์ง€ ํฌํ•จํ•˜๋Š” ๋ฌธ์ž์—ด๋กœ ์ž˜๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
console.log(firstChar+4, info.length);

๐Ÿค— Assignment
String์˜ slice()๋„ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ์ž์—ด ํ•จ์ˆ˜ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
JavaScript String slice() method

var str = "์„œ์šธ์‹œ ์–‘์ฒœ๊ตฌ ์‹ ์›”๋™";
var res =  str.slice(0, 5);
str.slice(0, 5)
//"์„œ์šธ์‹œ ์–‘"
str.slice(0)
//"์„œ์šธ์‹œ ์–‘์ฒœ๊ตฌ ์‹ ์›”๋™"
str.slice(3)
//" ์–‘์ฒœ๊ตฌ ์‹ ์›”๋™"
str.slice(3, 8)
//" ์–‘์ฒœ๊ตฌ "
str.slice(0, 1)
//"์„œ"
str.slice(-1)
//"๋™"

sliceCityFromAddress ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ด ์ฃผ์„ธ์š”.

  • sliceCityFromAddress ํ•จ์ˆ˜๋Š” address ์ธ์ž๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.
  • address ์ธ์ž์—๋Š” ์ฃผ์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” string์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.
  • ์ฃผ์–ด์ง„ ์ฃผ์†Œ๊ฐ€ ์–ด๋Š ๋„์‹œ์ธ์ง€๋ฅผ ์ฐพ์•„๋‚ด์„œ, ํ•ด๋‹น ์ฃผ์†Œ์—์„œ ๋„์‹œ ๋ถ€๋ถ„๋งŒ ์‚ญ์ œํ•œ ์ƒˆ๋กœ์šด ์ฃผ์†Œ๋ฅผ ๋ฆฌํ„ดํ•ด ์ฃผ์„ธ์š”.
  • ์ฃผ์†Œ๋Š” ๋ฌด์กฐ๊ฑด "์‹œ" ๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "์„œ์šธ์‹œ".
  • "๋„" ์™€ "์‹œ" ๋Š” ์ฃผ์†Œ์— ํ•œ๋ฒˆ ๋ฐ–์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์†Œ๊ฐ€ ์ฃผ์–ด์กŒ๋‹ค๋ฉด;
"๊ฒฝ๊ธฐ๋„ ์„ฑ๋‚จ์‹œ ๋ถ„๋‹น๊ตฌ ์ค‘์•™๊ณต์›๋กœ 53"

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ’์ด ๋ฆฌํ„ด๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

"๊ฒฝ๊ธฐ๋„ ๋ถ„๋‹น๊ตฌ ์ค‘์•™๊ณต์›๋กœ 53"

๋‹ต๋ณ€

function sliceCityFromAddress(address) {
let area = address.indexOf("๋„"); //๋„๋ฅผ ์ฐพ๋Š” ๋ณ€์ˆ˜
let si = address.indexOf("์‹œ"); //์‹œ๋ฅผ ์ฐพ๋Š” ๋ณ€์ˆ˜
if (area === -1){ 
  // area ๋ณ€์ˆ˜์— "๋„" ๊ฐ€ ์—†์–ด์„œ -1์„ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด
return address.slice(si + 2); 
  // "์‹œ"์™€ "์‹œ"์˜ ์•ž๋ถ€๋ถ„ ๋‘ ๊ธ€์ž๋ฅผ ์‚ญ์ œ์‹œ์ผœ์คŒ.
} else {
 return address.slice(0, area + 2) +  address.slice(si + 2);
 } // ๊ฒฝ๊ธฐ๋„ + ๋ถ„๋‹น๊ตฌ ์ค‘์•™๊ณต์›๋กœ 53 
}
sliceCityFromAddress("์„œ์šธ์‹œ ์–‘์ฒœ๊ตฌ ๋‚จ๋ถ€์ˆœํ™˜๋กœ");
//"์–‘์ฒœ๊ตฌ ๋‚จ๋ถ€์ˆœํ™˜๋กœ"
sliceCityFromAddress("๊ฒฝ๊ธฐ๋„ ์„ฑ๋‚จ์‹œ ๋ถ„๋‹น๊ตฌ ์ค‘์•™๊ณต์›๋กœ 53");
//"๊ฒฝ๊ธฐ๋„ ๋ถ„๋‹น๊ตฌ ์ค‘์•™๊ณต์›๋กœ 53"
sliceCityFromAddress("์„œ์šธ์‹œ ๊ฐ•๋‚จ๊ตฌ ํ…Œํ—ค๋ž€๋กœ 427");
//"๊ฐ•๋‚จ๊ตฌ ํ…Œํ—ค๋ž€๋กœ 427"	

address.slice(0, area + 2) = ๋„๋ฅผ ์ฐพ์•„์„œ ๋„ ๋’ค์— ์žˆ๋Š” ๊ธ€์ž๋“ค์„ ์‚ญ์ œํ•ด์คŒ. ์ฆ‰, ๊ฒฝ๊ธฐ๋„๋งŒ ๋‚จ์Œ.
address.slice(si + 2) = ์‹œ๋ฅผ ์ฐพ์•„์„œ ์‹œ๋ฅผ ํฌํ•จํ•œ ๊ธ€์ž๋“ค์„ ์‚ญ์ œํ•ด์คŒ. ์ฆ‰, "~์‹œ"๋งŒ ์‚ญ์ œ๋จ.
์ „๋‹ฌ ์ธ์ž -1์€ ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉฐ, ์ „๋‹ฌ์ธ์ž -3์€ ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ถ€ํ„ฐ ์•ž์ชฝ์œผ๋กœ ์„ธ ๋ฒˆ์งธ ์›์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€