Java で特定の文字と文字の間の文字列を取り出す
Java のコードで、Oracle の接続文字列 jdbc:oracle:thin:@127.0.0.1:1521:oracle
からホスト部分 127.0.0.1
を取得したい。
// 接続先 URL : 実際はこれを引数に受け取るイメージ
String str = "jdbc:oracle:thin:@127.0.0.1:1521:oracle";
final String _prefix = "jdbc:oracle:thin:@";
final int _preIdx = str.indexOf(_prefix) + _prefix.length();
final String suffix = ":1521:oracle";
final int _sufIdx = str.indexOf(_suffix);
System.out.println(str.substring(_preIdx, _sufIdx)); // "127:0.0.1"
String#indexOf()
は、引数と一致する文字列があった場合、最初の登場位置を返すので、変数 str
の場合、0
が返される。
そこから後で String#substring()
でズラす分、つまり indexOf()
の引数とした文字列自体の長さを String#length()
で取得して足してやる。
これを substring()
の第1引数、開始位置に指定すれば、thin:@
の次の 1 (27...)
からの文字列が取得できる。
一方、substring()
の第2引数とする終了位置については、indexOf()
で取得した最初の登場位置をそのまま指定してあげれば OK。
- 参考 : Syunp On | Syunp On