知っていると便利な章
4.16. 構文解析
『目的』
文字列を分断する方法を知りましょう。
『Before』
indexOf() や substring() によって文字の位置や部分文字列を取得できますよね。
部分文字列が欲しい目的で indexOf() や substring() を使ってみます。
区切り文字「.」があるインデックスを検出して部分文字列を取り出しています。
int index = 0; int nextIndex = 0; while ((nextIndex = string.indexOf('.', index)) != -1) { System.out.println(string.substring(index, nextIndex)); index = nextIndex + 1; }
substring のパラメータ指定はクセがあって使いにくいです。 インデックス指定が直感的にはわかりにくいためです。 インデックス指定は間違いを起こしやすいです。
"hamburger".substring(4, 8)
インデックス指定は0から始まるので(4, 8)指定は5文字目から9文字目、 つまり”urger” が返ってきそうです。
それは間違いです。”urge” が返されます。
beginIndex - 開始インデックス (この値を含む) endIndex - 終了インデックス (この値を含まない)
わかりにくいですね。
『After』
区切り文字毎に文字列を切り出したいのであればStringTokenizerを使うと簡単です。
StringTokenizer tokenizer = new StringTokenizer(string, "."); while (tokenizer.hasMoreTokens()) { System.out.println(tokenizer.nextToken()); }
インデックスを気にすることなく部分文字列を切り出してくれます。
改行コード毎に文字列を取り出す時などに便利ですね。
『まとめ』
substringメソッドはパラメータ指定を間違えやすいので注意しましょう。
文字列を切り出すときはStringTokenizerを利用しましょう。
-
IS 559680 / ISO27001
認証範囲 本社、芝大門オフィス情報セキュリティ基本方針 -
個人情報保護方針
個人情報の取扱いについて
保有個人データ又は
第三者提供記録に関する
事項の周知について
特定個人情報の取扱いについて -
FS 671851 / ISO9001
認証範囲 本社、芝大門オフィス品質方針