https://www.daleseo.com/js-substr-substring/
์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ์์ด ์๋ฅด๊ธฐ: substr()๊ณผ substring() ํจ์
Engineering Blog by Dale Seo
www.daleseo.com
๋งจ๋ ๋์ด ํท๊ฐ๋ฆฌ๋ ๋.. ์ ๋๋ก ์ตํ๋ณด๊ณ ์ ์ ๋ธ๋ก๊ทธ๋ฅผ ๋ณด๊ณ ๋ด๊ฐ ๊ณ์ ๋ณด๊ณ ์ฐธ๊ณ ํ ๋ด์ฉ๋ค์ ์ฎ๊ฒจ๋ณด์๋ค.
substr() ํจ์
๋จผ์ ์ดํด๋ณผ substr() ํจ์๋ ๋ฌธ์์ด์ ์ผ๋ถ๋ฅผ ์ผ์ ๊ธธ์ด๋งํผ ์ถ์ถํ๊ณ ์ถ์ ๋ ์ฌ์ฉํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ํํ๋ก ์ฒซ ๋ฒ์งธ ์ธ์๋ก ์์ ์ธ๋ฑ์ค๋ฅผ ๋ ๋ฒ์งธ ์ธ์๋ก ์๋ผ๋ผ ๊ธธ์ด๋ฅผ ๋๊ธฐ๋ฉด ๋ฉ๋๋ค.
"๋ฌธ์์ด".substr(startIndex, length);
"ABCDEFG".substr(2, 3); // "CDE"
"ABCDEFG".substr(2); // "CDEFG"
"ABCDEFG".substr(); // "ABCDEFG"
// -1์ด ๋์์ ์ฒซ ๋ฒ์งธ ๋ฌธ์์ด๊ณ , -2๊ฐ ๋์์ ๋ ๋ฒ์งธ ๋ฌธ์๊ฐ, -n์ด ๋์์ n ๋ฒ์งธ ๋ฌธ์๊ฐ ๋ฉ๋๋ค.
"ABCDEFG".substr(-5, 3); // "CDE"
substring() ํจ์
๋ค์์ผ๋ก ์ดํด๋ณผ substring() ํจ์๋ ๋ฌธ์์ด์ ์์๊ณผ ์ข ๋ฃ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ฅด๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋๋ฐ์. ๋ ๋ฒ์งธ ์ธ์๋ก ๋ฌธ์์ด ๊ธธ์ด ๋์ ์ ์ข ๋ฃ ์ธ๋ฑ์ค๋ฅผ ๋ฐ๋๋ค๋ ์ ์์ ์์์ ์ดํด๋ณธ substr()์ ํฐ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
"๋ฌธ์์ด".substring(startIndex, endIndex);
"ABCDEFG".substring(2, 5); // "CDE"
"ABCDEFG".substring(2); // "CDEFG"
"ABCDEFG".substring(); // "ABCDEFG"
// ์์ ์ธ๋ฑ์ค๋ฅผ ๋๊ธฐ๋ฉด 0์ ๋๊ธด ๊ฒ์ฒ๋ผ ์๋
"ABCDEFG".substring(-5, 3); // "ABC"
substr() vs. substring()
์์ ์ธ๋ฑ์ค์ ๊ธธ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ฅด๋ substr()์ ์์๊ณผ ์ข ๋ฃ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ฅด๋ substring()๋ ๋น์ทํ ๋ชฉ์ ์ ๊ฐ์ง๊ณ ์์ง๋ง ์ง๊ธ๊น์ง ์ดํด๋ณธ ๊ฒ์ฒ๋ผ ์ฌ์ฉ ๋ฐฉ๋ฒ๊ณผ ๋์ ๋ฐฉ์์์ ์ฐจ์ด๊ฐ ์์ด์ ์ฃผ์๊ฐ ํ์ํฉ๋๋ค.
substr() ํจ์๋ ์๋ฐ์คํฌ๋ฆฝํธ์์ deprecated, ์ฆ ํ๊ธฐ๋ ํจ์์ ๋๋ค. MDN ๊ด๋ จ ๋ ํผ๋ฐ์ค๋ฅผ ๋ณด์๋ฉด ์ด์ ์ฐ์ง ๋ง๋ผ๊ณ ๋นจ๊ฐ์ ๊ธ์จ๋ก ๊ฒฝ๊ณ ํ๊ณ ์์ต๋๋ค.
"๋ฌธ์์ด".substr(startIndex, length);
"๋ฌธ์์ด".substring(startIndex, startIndex + length);
์ด๋ฌํ ์๋ น์ ์ฌ์ฉํ์ ์ ๊ฐ๊ธ์ substr()๋ฅผ ์ฌ์ฉํ ์ฝ๋๋ฅผ substring()์ ์ฐ๋๋ก ๋ฆฌํํ ๋ง(refactoring)ํ์๊ธฐ๋ฅผ ์ถ์ฒ๋๋ฆฝ๋๋ค. Deprecated๋ ํจ์๋ฅผ ์ฌ์ฉํด์ ์ข์ ์ผ์ ์์ผ๋๊น์.
๋ณด๋์ค: slice() ํจ์
substr()์ substring() ๋งํผ ํ๊ฐ๋ฆฌ๋ ๊ฒ์ ์๋์ง๋ง ์ ์ฌํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ ํจ์๊ฐ ํ๋ ๋ ์์ด์ ์ง๊ณ ๋์ด๊ฐ๋ ค๊ณ ํฉ๋๋ค. ๋ฐ๋ก ๋ฐฐ์ด ๋ฟ๋ง ์๋๋ผ ๋ฌธ์์ด์ ์๋๋ก๋ ์ฌ์ฉํ ์ ์๋ slice() ํจ์์ธ๋ฐ์. ์ด ํจ์๋ ์ฒซ ๋ฒ์งธ ์ธ์๋ก ์์ ์ธ๋ฑ์ค๋ฅผ ์ง์ํ๋ค๋ ์ ์์๋ substr()๊ณผ ์ ์ฌํ์ง๋ง, ๋ ๋ฒ์งธ ์ธ์๋ก ์ข ๋ฃ ์ธ๋ฑ์ค๋ฅผ ๋ฐ๋๋ค๋ ์ ์์๋ substring()๊ณผ ์ ์ฌํฉ๋๋ค.
"๋ฌธ์์ด".slice(startIndex, endIndex);
"ABCDEFG".substr(-5, 3); // "CDE"
"ABCDEFG".substring(-5, 3); // "ABC"
"ABCDEFG".slice(-5, 3); // "C"