string param = "あいう(えお(かき)くけ)こ";
このような文字列があった場合、
えお(かき)くけ
の部分だけを取り出したいのですが
簡単に抽出できる方法はありますでしょうか?
条件があいまいなので、簡単な方法から難しい方法までどの方法を使えばいいか特定できません。
複数の例や目的を書くのが良いと思います。
カッコの数が決まっているなら正規表現を使うのが手軽でしょうし、場合によっては取り出すのではなく埋め込む方が良いこともあります。
ありがとうございます。
カッコの数は決まっていない想定です。たくさんのカッコが含まれている文字列の中から一番外側のカッコで囲まれている部分だけを取り出したいです。
適当にこねくり回すのではなく、明確な言葉を使って事細かに指示するのがプログラミングです。
指示する側が細かい条件を把握できていないのであれば、コンピューターに指示することはできません。
物事を正確に把握して正確に伝える能力が必要とされます。
今のところ、それができているとは言えません。
今ある条件を満たすプログラムを作ることはできますが、それを実際に使おうとすると、別の条件で破綻するでしょう。
文字 '(' と ')' は ASCII 文字(いわゆる半角英字、Unicode で言うとそれぞれ U+0028 と U+0029)で、文字列の中には必ず '(' と ')' がペアで存在するという条件でいいのですか?
そうですね…
上記の例のみ対応であるならば、下記のようなロジックでいけそうですが、
まだまだ条件を付ける必要性を感じます。
1.カウントを0に初期化
2.文字列の先頭から順番に1文字つづ取り出す。
3.(が来たらカウントを+1する。この場所を覚えておく。①
4.カウントが1のときに)がきたらカウントをー1する。この場所を覚えておく。②
5.カウントが1以外のときに)がきあたrカウントを-1する。
6.①から②までの文字列を取り出す。
ありがとうございます。カウントが1と0で囲まれた部分で取り出すっていう感じですかね…
行けそうな気がします。こちらで書いてみようと思います。
> カウントが1と0で囲まれた部分で取り出すっていう感じですかね…
自力でそのためのコードを書くのではなくて、String クラスに用意されているメソッド、プロパティなどを最大限利用することをお勧めします。具体的には下の私の回答を見てください。
まだ回答がついていません
会員登録して回答してみよう