2023. 1. 19. 09:22ใJAVA/Effective JAVA
item06. ๋ถํ์ํ ๊ฐ์ฒด ์์ฑ์ ํผํ๋ผ.
" p32. ์ ๊ท ํํ์"
: item06 ์๋ฒฝ๊ณต๋ต 2๋ฒ์งธ ์๊ฐ์๋ ์ ๊ท ํํ์์ด ์์๋๋ฐ, ์ดํํฐ๋ธ ์๋ฐ ๊ฐ์์์ ์ ๊ทํํ์์ ์์ธํ ๋ค๋ฃจ๋๊ฑด ๊ฐ์ ์ฃผ์ ์ ๋ง์ง๋ ์๊ณ , ์ ๊ทํํ์ ์์ฒด๋ง ํด๋ ๋ด์ฉ์ด ์๋ ๋ง๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์๋ ์ ๊ทํํ์์ด ์ฌ์ฉ๋๋ ๊ณณ์ ๋ํด์ ๋ค๋ฃฌ๋ค.
String.matches(String regex)
: ์ด ๋ฉ์๋๋ ํด๋น ๋ฌธ์์ด์ด ์ฃผ์ด์ง ์ ๊ทํํ์์ ๋ถํฉํ๋์ง์ ์ฌ๋ถ๋ฅผ boolean(true, false)๋ก ๋ํ๋ด์ฃผ๋ ๊ฒ์ด๋ค.
๋ณดํต ์ ๊ทํํ์์์ด์ฉํ ์ ํจ์ฑ ๊ฒ์ฌ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ์ด๋ค.
s.matches("^(?=.)M*(C[MD]|D?C{0,3})(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})$");
String.split(String regex)
: ํด๋น ๊ท์น์ ๊ตฌ๋ถ์๋ก ํ์ฌ์ ๋ฐฐ์ด์ ๋ง๋ค์ด์ฃผ๋ ๋ฉ์๋์ด๋ค.
String name = "hyejin,,,20230119,,,effective java study";
name.split(",,,");
์ด๋ splitํ ๋ฌธ์๊ฐ ํ๊ฐ๋ผ๋ฉด split ๋ฉ์๋๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํด๋ ๊ด์ฐฎ์ง๋ง ์์ ์์์ฒ๋ผ ๊ตฌ๋ถ์๊ฐ ํ๋ฌธ์ ์ด์์ด๋ผ๋ฉด
๋์ : Pattern.compile(regex).split(str);
private static final Pattern SPLIT_PATTERN = Pattern.compile(",,,");
String name = "hyejin,,,20230119,,,effective java study";
SPLIT_PATTERN.split(name);
์ด๋ฐ์์ผ๋ก ๋ฏธ๋ฆฌ ์ ์ํด๋๊ณ , ์ฌ์ฉํ๋ ๊ฒ์ด ์ฑ๋ฅ์ ์ผ๋ก ์ข๋ค.
String.replaceAll(String regex, String replacement), String.replaceFirst(String regex, String replacement)
: String.replaceAll ๋ฉ์๋๋ ํด๋น ๋ฌธ์์ด์ค์์ ์ฃผ์ด์ง ์ ๊ทํํ์์ ๋ถํฉํ๋ ๋ด์ฉ์ ํน์ ๋ด์ฉ์ผ๋ก ์นํํ๋ ๋ฉ์๋์ด๋ค.
String.replcaeFirst ๋ฉ์๋๋ ํด๋น ๋ฌธ์์ด์ค์์ ์ฃผ์ด์ง ์ ๊ทํํ์์ ๋ถํฉํ๋ ๋ด์ฉ ์ค ์ฒ์์ผ๋ก ์ฐพ์ ๋ฌธ์ ํ๋๋ง ๋ณ๊ฒฝ ์ฒ๋ฆฌํ๋ ๋ฉ์๋์ด๋ค.
์ด๊ฒ๋ ์ญ์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค
๋์ : Pattern.compile(regex).matchers(str).replaceAll(repl)
์ด๋ฐ์์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
์ ๊ทํํ์ ๊ด๋ จ ์ฌ์ดํธ