• ベストアンサー

テキストボックス内の文字の置き換え

編物用の洋書を日本語に変換するものを作っています 文字を置き換えするときに aaを11に aaaaを2222に置き換えたいのですが Str = RichTextBox1.Text RichTextBox2.Text = str.Replace("aa", "11").Replace("aaaa", "2222") と書くと aaaaが1111に置き換えられます RichTextBox2.Text = str.Replace("aaaa", "2222").Replace("aa", "11") と書けばよいのですが、置き換える単語は、もっと沢山あって・・・・ 完全一致の単語を置き換えるという書き方は、有るのでしょうか? あれば、是非教えてください よろしくお願いいたします

noname#108988
noname#108988

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

正規表現オブジェクトを使う方法があります。 応用範囲が広く、覚えておくと便利です。 Function 置換(ByVal 文字列 As String) Dim R Set R = CreateObject("VBScript.RegExp") R.Pattern = "\baa\b" 文字列 = R.Replace(文字列, "11") '1回目の置換 R.Pattern = "\baaaa\b" 置換 = R.Replace(文字列, "1111") '2回目の置換 End Function 単語とあるので、aaaaやaaの前後には空白などの境界があると 判断しました。正規表現中の\bはその意味です。 もし、"aa"と"aaaa"(前後に空白などがない)のであれば、 正規表現を"^aa$"とします。 正規表現オブジェクトは下記参照 http://msdn.microsoft.com/ja-jp/library/cc392487.aspx 正規表現の構文は下記参照 http://msdn.microsoft.com/ja-jp/library/cc392020.aspx

noname#108988
質問者

お礼

正規表現オブジェクトを初めて知りました ありがとうございました

noname#108988
質問者

補足

回答ありがとうございます まだまだ、VB自体初心者で、 正規表現オブジェクトを勉強してみます

その他の回答 (3)

  • AKARI0418
  • ベストアンサー率67% (112/166)
回答No.4

置き換える対象となる文字列の長い順に処理すればいいわけですから、 以下のようにしてみては同でしょうか? Module Module1 Sub Main() Dim replaceList As New List(Of Replacement) replaceList.Add(New Replacement("aa", "11")) replaceList.Add(New Replacement("aaaa", "2222")) replaceList.Add(New Replacement("aaa", "333")) replaceList.Add(New Replacement("a", "4")) replaceList.Add(New Replacement("aa", "55")) replaceList.Sort(AddressOf SortDesc) For Each items In replaceList Console.WriteLine(items.Target) Next Console.ReadLine() End Sub ''' <summary> ''' 文字長の長い順にソート ''' </summary> Function SortDesc(ByVal x As Replacement, ByVal y As Replacement) As Integer Return (y.Target.Length - x.Target.Length) End Function Public Class Replacement Public Sub New(ByVal t As String, ByVal s As String) Me._setValue = s Me._target = t End Sub Private _target As String ''' <summary> ''' 置換え対象 ''' </summary> Public Property Target() As String Get Return _target End Get Set(ByVal value As String) _target = value End Set End Property Private _setValue As String ''' <summary> ''' 置換え内容 ''' </summary> Public Property SetValue() As String Get Return _setValue End Get Set(ByVal value As String) _setValue = value End Set End Property End Class End Module

noname#108988
質問者

お礼

まだ、ここまで知識が付いていきませんが 内容をひとつひとつ勉強して理解したいと思います

  • BellBell
  • ベストアンサー率54% (327/598)
回答No.3

う~ん、例が適切ではないのかな? ちょっとやりたい事が見えないです。 純粋に、海外文書の翻訳? 単語置換えしても翻訳の助けにはならないような気がするし、翻訳ソフトを通した方がはるかにマシだし。 (翻訳ソフトの売ってない言語ってのもあり得ますが) それとも『編物用』ってのがミソで、網目表(とでも言えばいいのかな?)が、原書と日本で使用されているもので表現が異なり、当然翻訳ソフトも使用できないので困っているというところでしょうか? 変換表を用意しておいて、変換元の単語(?)の長い順に置き換えすれば何とかなるかな? という予想もありますが、変換先の単語内に変換元の単語が含まれていない事が保証されるかどうか、という仕様上の問題もありますね。

noname#108988
質問者

お礼

>変換表を用意しておいて ということで、データーベース化することにしました。 まだまだ、ですが、 他の方の回答も踏まえて、頑張ってみたいと思います ありがとうございました

noname#108988
質問者

補足

ありがとうございます まだまだ、初心者で、VB自体を使いこなせてないので 質問自体が稚拙な事なのかもわかりませんが・・・・・ そうなんです 編物をされていないと分かりずらいかと思いますが 例えば K と書いてあると、表目で k up と書いてあると、引き上げ編み という編み方をしてください という意味なんです 単語も、全部分かっている訳でなく 以降、追加していこうと思っています。

  • j-kachimi
  • ベストアンサー率35% (48/136)
回答No.1

変換する文字列を変換優先順に配列に定義して ループで回し順次変換すればよいかと思います。

noname#108988
質問者

お礼

ありがとうございました

noname#108988
質問者

補足

ありがとうございます 単語も、全部分かっている訳でなく 以降、追加していこうと思っていますので、 最初に、完全一致にしておけば簡単かなぁと 単純に思ったのです。

関連するQ&A

  • 文字の置き換え

    ファイルを読み込み、特定の文字を置き換え書き出したいです。 $search = "あいうえお";//置き換え前 $replace = "アイウエオ";//置き換え後 $fp = fopen("index.php", w); $file = file($fp); foreach($file as $key => $val){ $prg = str_replace($search,$replace,$file); fwrite($fp,$prg); } fclose($fp); 上記だとファイルサイズが0になってしまいます。 どのようにすればよいのでしょうか。

    • ベストアンサー
    • PHP
  • 大小文字混合させて削除したい

    if(getId("abc").checked==true){ str = str.replace(/AA|BB/g, ""); } 現在、AA,BB は削除できますが、 AA,Aa,aA,BB,Bb,bBの大文字小文字混合でも削除する場合はどうやればよいでしょうか? str = str.replace(/AA|BB/i, ""); にしたら、変な動作になりました。  

  • 前後の文字で判断して文字を置き換えを行いたいです。

    javascriptで前後の文字を条件に文字を置き換えるものを作成したいです。 文字の置き換えは正規表現のreplaceでいけることはわかったのですが、 前後の文字で判断する方法が思いつかない状況です。 どなたか知恵をお貸しいただけないでしょうか よろしくお願い致します。 例 条件:もし前後文字が数字なら五を5に変換 入力:1234五6789 出力:123456789 この場合は漢数字を数字に戻し下記の場合はそのままにしたいです。 例2 条件:もし前後文字が数字なら五を5に変換 入力:一二三四五六七八九 出力:一二三四五六七八九

  • エクセルで文字の置き換え

    エクセルで、文字の置き換えの方法についてですが、 A1のセルの値:1-2*大阪 A2のセルの値:日本1-2*神戸 A3のセルの値:1-2*大阪 とした場合、1-2の部分を01-02と書き換えたいと思います。 編集の置き換えで検索する文字を、1-2として置き換え後の文字を01-02とすると、置き換え後の文字が A1のセルの値:01-02 A2のセルの値:日本01-02 A3のセルの値:01-02 となります。何かいい方法ってないでしょうか? 理想の変換後の形は、 A1のセルの値:01-02*大阪 A2のセルの値:日本01-02*神戸 A3のセルの値:01-02*大阪 です。VBAで処理されてもかまいません。 よろしくお願い致します

  • mb_ereg_replaceについて

    マルチバイトでの置き換えについて質問です。現在は以下のように str_replaceで置き換えしており文字化けはないのですがマルチバイト 対応のmb_ereg_replaceで実行したほうがいい事を知りました。 以下現在のソースです。 // 検索文配列 $search = array("{#aaa#}", "{#bbb#}", "{#ccc#}"); // 置き換え文配列 $replace = array("あああ", "いいい", "ううう"); // 置き換え $str = str_replace($search, $replace, $str); 単純にstr_replaceをmb_ereg_replaceにしてみたのですがエラーに なってしまいました。 置き換えしたい文字が複数あるのでできれば検索文字、置き換え文字を 配列として使用したいのですがどうすればいいのでしょうか? ちなみにですが文字コードはutf-8です。

    • ベストアンサー
    • PHP
  • テキストボックスの内容(複数行)をリストへ

    テキストボックスの内容(複数行)をリストボックスへ1行表示にするにはどうすれば良いのでしょうか? replaceにてvbcrlf(改行文字?)を置き換えしようとしても無理でした。 ご教授お願いします。

  • 文字(単語)の置き換え

    ある文字や単語を、別の文字や単語に置き換えたいのですが、そういった機能があるソフトを教えていただけないでしょうか。 たとえば標準語を方言に変換すると機能と解釈していただければわかりやすいと思います。 ワードで出来ますが、これで作ってしまうと、他の文書にも影響するでしょうから、ワードでは出来ないと思います。

  • 図形やテキストボックスに文字を入力するときに・・・

    Word2010で日本語を入力するときに、点線の下線のついたひらがなが表示され、変換してenterを押して確定します。ところが、図形やテキストボックスを挿入して、文字を入力しようとすると変換前の文字は表示されず、enterを押して初めて文字が表示されます。 先日までは普通に使えていたのですが、急に表示されなくなってしまいました。 正常に戻すにはどうしたらいいでしょうか? 教えてください。

  • 変換しないといけない文字

    htmlファイルからフォームの値を受け取りcsvに書き込み、書き込んだcsvファイルを別のhtmlファイルから読み出します。 書き込む際に変換もしくは削除しておかなければならない文字はありますか。 現在変換しているものは ・htmlspecialcharsでhtmlタグを変換 ・str_replaceでカンマを全角カンマに変換 ・str_replaceで"を”に変換 ・nl2brで改行を変換 これ以外にも変換しておかないといけないものがありましたら教えてください。

    • 締切済み
    • PHP
  • 文字列を配列化する方法を教えてください!

    1列の文字列を配列化する方法を教えてください。 メモリの確保らしいのですが、参考になるソースが拝見できれば嬉しく・・・main から参照したいです。 char Text[] = "AAAA\nBBBB\nCCCCCCCC\nDDD\n";  ↓ char str[0] = "AAAA";    str[1] = "BBBB";    str[2] = "CCCCCCCCC";    str[3] = "DDD"; どうやったらいいのか全くイメージがわかないので、 よろしく御願いします!