• ベストアンサー

String内の文字一括置換について

String内の文字一括置換について 文字列に対して置換の要件が以下である場合、 「あ」⇒「ア」 「い」⇒「ゐ」 「う」⇒「ウ」 「え」⇒「ぇ」 「お」⇒「-」 (1)「あ」が含まれている場合「ア」に置換 (2)「い」が含まれている場合「ゐ」に置換 (3)「う」が含まれている場合「ウ」に置換 (4)「え」が含まれている場合「ぇ」に置換 (5)「お」が含まれている場合「-」に置換 というステップを踏めば置換できますが、 それ以外に一括して置換することは可能でしょうか? 正規表現やMAPを使って可能かとは思ったのですが、 「一括して」ということが実現できませんでした。

  • Java
  • 回答数1
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
noname#114415
noname#114415
回答No.1

関数を使えば(作れば)一括で出来ますよ~

sho_1982
質問者

お礼

private static final String subTBL[][] = { {"あ", "ア"}, {"い", "ゐ"}, {"う", "ゥ"}, {"え", "エ"}, {"お", "-"}, } を定義して、1文字ずつ見ていく方法が無難ですね。 ありがとうございます。

関連するQ&A

  • 正規表現で一括置換

    現在、数多くの長文データを、テキストエディタの置換機能で一括置換しています。 jeditX(または秀丸エディタ)の正規表現をもちいた複数一括置換について質問させていただきます。 私は正規表現やPC言語の初心者です。どうぞよろしくお願いいたします。 かなり困り果てております。どうぞ、正規表現にくわしいかた、よろしくお願いします。 一二三『一二三にそれぞれ♪マーク』 という文章に対して 一♪二♪三♪ という一括置換をすることには成功しました。 こう書いています。 ■検索文字列 (.{1,1})(.{1,1})(.{1,1})『(.{1,1})(.{1,1})(.{1,1})にそれぞれ♪マーク』 ■置換文字列 \1♪\2♪\3♪ これでぶじ、以下のように一括置換できました。 一♪二♪三♪ 現実には傍点や圏点をふっているんですが、判りやすく♪マークにしています。 この調子で長い文章も変換できていて満足していたのですが…… しかし代入文字が10個以上になったとたんに、まったく動きません。 ■置換したい文章 一二三四五六七八九十『一二三四五六七八九十にそれぞれ♪マーク』 ■検索文字列 (.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})『(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})にそれぞれ♪マーク』 ■置換文字列 \1♪\2♪\3♪\4♪\5♪\6♪\7♪\8♪\9♪\10♪ こうやると、置換後の文章は以下のようになってしまいます。 一♪二♪三♪四♪五♪六♪七♪八♪九♪一0♪ 10個目以降の数字が、正しく機能してくれません。 \10  という正規表現の書き方は 「一番目の値を参照して、それから数字の0を記入しなさい」 という意味になってしまうようです。 わたしは十番目の値を代入してほしいだけなんです。 \1 や \2 や \3 といった代入文字のように \10 や \11 を機能させる、正しい表記をご教授ください。よろしくお願いいたします。 ちなみに以下のように書いてもダメでした……。 \1\0 グーグルで1日中検索しても判りませんでした。jeditXの複数一括置換でこれをなんとかしたいのです。ご存じの方、どうぞ教えてください。よろしくおねがいします! 秀丸エディタをご利用で、正規表現にくわしい方も、ぜひヒントを出していただければと思います。

  • タグにはさまれている文字以外を置換したい

    あるマルチバイト文字列に対して、特定の文字を正規表現で置換したいのです。 そのマルチバイト文字列には、htmlの<a>タグが混じっています。(混じっていない場合もあります。) 置換したいのは、<a>タグで囲まれている文字以外の文字なのですが、正規表現としてどのようなパターンにすれば出来るのか悩んでおります。 ------------------------------------------------- //置換前のマルチバイト文字列 "朝一番のコーヒーは<a href="index.html">3時のコーヒーや</a>食後のコーヒーより旨い" //検索・置換対象となる文字列 "コーヒー" //置換を行う文字列 "紅茶" //置換後のマルチバイト文字列 "朝一番の紅茶は<a href="index.html">3時のコーヒーや</a>食後の紅茶より旨い" ------------------------------------------------- ↓こちらを参考にしてみたのですが、ちょっとやりたいことと違うみたいでうまくいきませんでした。 http://www.din.or.jp/~ohzaki/regex.htm#ReplaceOutside ================================================= $string = "朝一番のコーヒーは<a href="index.html">3時のコーヒーや</a>食後のコーヒーより旨い" $pattern = '/((?:\G|>)[^<]*?)コーヒー/'; $result = mb_ereg_replace($pattern, '\1紅茶', $string); echo $result; ================================================= 是非、皆様に力を貸して頂きたく、どうぞ宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 正規表現でエスケープ文字の置換

    正規表現でエスケープ文字(&nbsp;等)を別の文字列に置換しようと思い、「/&.+;/」というパターンを作成したのですが、エスケープ文字が連続する場合(&nbsp;&lt;)1文字に置換されてしまいます。 正規表現をご存知の方、ご教授ください。

  • こんな一括置換ツールはご存知ないでしょうか?

    置換したい文字列を一度に置換するツールを探しています。 具体的には再置換しないツールを探しております。 理想は変換する文字列をリスト化でき、一括置換するツールです。 例)最適→最善   最善→最適 置換したいリストを作成するツールは色々あったのですが、 上記の例のような設定をするとツールの自動一括置換処理で 最適の文字列を置換した場合 最適→最善→最適 ・・・といった具合に変換前の文字に戻ってしまいます。 ですので、一回置換した文字列を再置換しないツールを探しております。 ツールでなくても方法があれば教えていただきたいです。 どなたかご回答の方よろしくお願いいたします。

  • 正規表現で少し複雑な置換がしたい

    Javaというよりも、正規表現について質問です。 (一応、言語はJavaで、String#replaceAllを使います) 以下のルールで与えられた文字列の置換を行う正規表現を考えていますが、なかなかうまくいきません。 1.正規表現で \w+:: にマッチする文字列を削除する。 2.ただし、'' (シングルクォーテーション)で囲われている文字列は   1.の対象としない 3.ただし、\' (シングルクォーテーションの前に\があった場合は)   シングルクォーテーションと認識しない。 例: 置換前  A * B \'' CCC.DD::EEE' FFF.GGG::HH ' III' 置換後  A * B \'' CCC.DD::EEE' FFF.HH 'III' 色々試してみたのですが、どうしてもうまくいきません。 正規表現が得意な方、教えていただけますでしょうか・・?

    • ベストアンサー
    • Java
  • 秀丸で、複数の置換を1ステップにまとめることはできるのでしょうか。

    秀丸で、複数の置換を1ステップにまとめることはできるのでしょうか。 たとえば りんごみかん という文字列があるとして “りんご”は“林檎”へ置換。 “みかん”は“蜜柑”へ置換。 をして、結果的に 林檎蜜柑 という文字列にしたい場合に それぞれ置換をする、合計2ステップの置換作業をするのではなく 一度の置換(1ステップ)でこれを実現することは可能でしょうか。 意味不明でしたら加筆いたしますのでよろしく御願いします。

  • 秀丸での正規表現を使用した置換

    いつもお世話になっております。 秀丸で正規表現を使用した置換処理を行いたいと思うのですが、どうしても正規表現の式が書けません。 どうかご教示下さい。 <置換前> ABC1 あAbCd++ ... ... ・先頭4文字は半角英数字の大文字固定 ・その後ろにタブ ・最後にかな、英数字、記号などの可変長の文字列 上記で1レコードです。 <置換後> ABC1 String 内容 あAbCd++ ... ... ・先頭4文字そのまま ・その後ろにタブを3つ+改行 ・続いて「内容」という文字列+改行 ・最後に可変長の文字列をそのまま+改行 「置換」の正規表現は以下だと思うのですが、英数字4文字と可変長文字列を別々にマッチさせる「検索」がどうしても分かりません。 \0 String\n内容\n\1\n どうかご教示下さい。 <環境> Ver.6.1.4

  • Excel : タグ付き正規表現による文字置換は可能?

    アクティブセルの文字を、正規表現を利用して文字置換をしたいと考えています。 ただ、単純な文字置換ではなく、正規表現にマッチした文字列を記憶して、 置換後の文字列として呼び出して利用します。 秀丸エディタにあるような「タグ付き正規表現」を利用したいです。 Excelでも同じようなことは可能なのでしょうか? 一例として挙げますと、次のような文字置換です。 ●「?」の後に全角スペース以外の文字がある場合には、「?」の後に全角スペースを1つ入れる。 ●「?」の後に全角スペースが複数続く場合には、「?」の後の全角スペースを1つだけにする。 つまり、★を全角スペースとすると、次のようになります。 あいう?あいう   → あいう?★あいう あいう?★★あいう → あいう?★あいう さらに、一例を挙げますと、 ●「AさんはBさんの友達です」というような文章を、「BさんはAさんの友達です」にする。  つまり、AとBに相当する部分を入れ替える。 よろしくお願いいたします。

  • 秀丸の置換で正規表現を使う方法を教えてください

    お世話になります 秀丸エディタの置換を用いて、 (’.ab12#-cd’)のような文字列や数字、記号のまじった ( )から( )の中身を検索置換して (’’)にしたいと考えています。 具体例 (’.ab12#-cd’) (’.ab#37-c’) (’..ab-82#d%’) (’.12jg+#ppv’) (’.ab12lentext’)から ↓ (’’)に置換したい。 秀丸を使うときはあっても単純な 一文字程度の検索置換しかおこなったことがなく どうにも方法がうかばなかったところ 友人から、正規表現というものを 使えば実現できるようだと聞きました。 友人も残念ながら、プログラミングの経験は あまりなくて正規表現での記述方法は わからないいうことでした。 正規表現を使ってこれを実現する方法を 教えていただけませんでしょうか よろしくお願いいたします

  • サブライムで正規表現の部分を一括で置換したい

    サブライムで正規表現の部分を一括で置換したいのですがうまくいきません。 見つからないとなります。 <!-- href="#"は、 --> ([a-z]*)([0-9]*) </div> </nav> こちらを下記に一括置換したいです。 <!-- href="#"は、 --> ページ共通の置換対象の文字数値 </div> </nav> どこをしゅうせいすればいいでしょうか?

専門家に質問してみよう