やりたいこと
以下の文字列を
ABC(DEF)G(H)
以下としたい。
ABCG
環境情報
$ java --version openjdk 11.0.6 2020-01-14
やり方
以下を実行すればinputtestという変数に指定した括弧で囲まれた文字列が省いた文字列が格納されています。
String inputtest = "ABC(DEF)G(H)"; int s = inputtest.indexOf("("); int e = inputtest.indexOf(")")+1; while(s>=0 && e >0) { String outputtest = inputtest.substring(0, s)+inputtest.substring(e); inputtest = outputtest; s = inputtest.indexOf("("); e = inputtest.indexOf(")")+1; }
もし文字列に指定した記号がない場合にはループ処理に入らないのでエラーになることもありません。
以下、補足です。
補足
substring
で文字列を抜き出しています。
例えば上記コードにSytem.outを追記して値を逐次表示するようにすれば
String inputtest = "ABC(DEF)G(H)"; int s = inputtest.indexOf("("); int e = inputtest.indexOf(")")+1; while(s>=0 && e >0) { String outputtest = inputtest.substring(0, s)+inputtest.substring(e); inputtest = outputtest; System.out.println(s+" "+e); System.out.println(inputtest); s = inputtest.indexOf("("); e = inputtest.indexOf(")")+1; }
以下が標準出力になります。
3 8
ABCG(H)
4 7
ABCG
注意点としては入力情報の変数を直接一時変数代わりにしているのでそこを避けた場合は以下のように別の変数を用意ください。
String hoge = inputtest;
以上、ご参考になれば幸いです。