๊ณ์ฐ๊ธฐ๋ฅผ ๊ตฌํํ๋ฉด์ ๋ฌธ๋ ํ ๋ฌธ์์ด์์ Tokenization์ ํตํด ์ฌ์น์ฐ์ฐ์ ์ ์ธํ ๋ฌธ์๋ค์ ๊ฑท์ด๋ด๊ณ ์ถ์๋ค.
์ฝ๋๋ฅผ ์ง๋ ์ด๋ฐ์ด๋ผ Tokenization์ ์ด๋ป๊ฒ ํ ๊น ๊ณ ๋ฏผํ๋ฉด์ ๊ตฌ๊ธ๋ง์ผ๋ก ์ฌ๋ฌ ์๋ฃ๋ฅผ ์ฐพ์๋ณด๋ค๊ฐ Splitํจ์๋ฅผ ์๊ฒ๋์๋ค.
์๋ ๊ตฌ๋ฌธ์ ํฌํจํ ์ฝ๋๋ฅผ ์คํํ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
// Initial Code
Scanner input = new Scanner(System.in);
String str = input.next();
String[] p = str.split("+"); //error
split ํจ์์ ๊ตฌ์กฐ๋ฅผ ๋ค์ ์ดํด๋ณด๋ ํด๋น ํจ์๋ ์ ๊ทํํ์์ ํตํด ๋ฌธ์๋ฅผ ์ธ์ํ๋ค๊ณ ํ๋ค.
์ ๊ทํํ์์ ๋ฐ๋ฅด๋ฉด +๊ฐ ์๋ฏธํ๋ ๋ฐ๋ "์ ๋ฌธ์๊ฐ 1๊ฐ ์ด์ ์กด์ฌํ ์ ์๋ค." ๋ผ๋ ๋ป์ด๋ผ๊ณ ํ๋ค.
์ ๊ทํํ์์์ ํน์๋ฌธ์์ธ +๋ฅผ ํํํ๊ธฐ ์ํด์๋ "\\+"๋ก ํ๊ธฐํด์ผํ๋ค.
// Fixed Code
Scanner input = new Scanner(System.in);
String str = input.next();
String[] p = str.split("\\+");
ํด๋น ๋ธ๋ก๊ทธ์์ ์ ๊ทํํ์์ ๋ณด๊ธฐ์ข๊ฒ ์ ์ ๋ฆฌํด๋์๋ค.
๋ฌธ๋ฒ
^ | ๋ฌธ์์ด ์์ |
$ | ๋ฌธ์์ด ์ข ๋ฃ |
. | ์์์ ๋ฌธ์ [๋จ ‘'๋ ๋ฃ์ ์ ์์ต๋๋ค.] |
* | ์ ๋ฌธ์๊ฐ 0๊ฐ ์ด์์ ๊ฐ์๊ฐ ์กด์ฌํ ์ ์์ต๋๋ค. |
+ | ์ ๋ฌธ์๊ฐ 1๊ฐ ์ด์์ ๊ฐ์๊ฐ ์กด์ฌํ ์ ์์ต๋๋ค. |
? | ์ ๋ฌธ์๊ฐ ์๊ฑฐ๋ ํ๋ ์์ ์ ์์ต๋๋ค. |
[] | ๋ฌธ์์ ์งํฉ์ด๋ ๋ฒ์๋ฅผ ํํํฉ๋๋ค. -๊ธฐํธ๋ฅผ ํตํด ๋ฒ์๋ฅผ ๋ํ๋ผ ์ ์์ต๋๋ค. ^๊ฐ ์กด์ฌํ๋ฉด not์ ๋ํ๋ ๋๋ค. |
{} | ํ์ ๋๋ ๋ฒ์๋ฅผ ๋ํ๋ ๋๋ค. |
() | ๊ดํธ์์ ๋ฌธ์๋ฅผ ํ๋์ ๋ฌธ์๋ก ์ธ์ํฉ๋๋ค. |
| | ํจํด์ OR ์ฐ์ฐ์ ์ํํ ๋ ์ฌ์ฉํฉ๋๋ค. |
\s | ๊ณต๋ฐฑ ๋ฌธ์ |
\S | ๊ณต๋ฐฑ ๋ฌธ์๊ฐ ์๋ ๋๋จธ์ง ๋ฌธ์ |
\w | ์ํ๋ฒณ์ด๋ ๋ฌธ์ |
\W | ์ํ๋ฒณ์ด๋ ์ซ์๋ฅผ ์ ์ธํ ๋ฌธ์ |
\d | [0-9] ์ซ์ |
\D | ์ซ์๋ฅผ ์ ์ธํ ๋ชจ๋ ๋ฌธ์ |
(?i) | ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์์ต๋๋ค. |
\\ | ํน์๋ฌธ์๋ฅผ ๋งค์นญ ex) "+" -> "\\+" |
์ถ๊ฐ๋ก ์๋ Reference์ ์ ๊ทํํ์ ๊ณต์ ๋ ํผ๋ฐ์ค๋ฅผ ๋ณด๊ณ ์ ๊ทํํ์์ ์ง์ ์ฌ์ฉํ๋ฉด์ ์ตํ๊ธฐ ์ํ ์ฌ์ดํธ ๋งํฌ๋ ๋ฌ์๋๊ฒ ๋ค.
Reference
'๐ฌ Language > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
StringTokenizer (0) | 2020.01.18 |
---|---|
extends์ implements (0) | 2020.01.17 |
Event๋? (0) | 2020.01.11 |
GUI ํํํ๊ธฐ (0) | 2020.01.09 |
args[0]์ ์ด๊ธฐ๊ฐ? (0) | 2020.01.08 |