編物用の洋書を日本語に変換するものを作っています
文字を置き換えするときに
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")
と書けばよいのですが、置き換える単語は、もっと沢山あって・・・・
完全一致の単語を置き換えるという書き方は、有るのでしょうか?
あれば、是非教えてください
よろしくお願いいたします
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 …
正規表現の構文は下記参照
http://msdn.microsoft.com/ja-jp/library/cc392020 …
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
No.3
- 回答日時:
う~ん、例が適切ではないのかな?
ちょっとやりたい事が見えないです。
純粋に、海外文書の翻訳?
単語置換えしても翻訳の助けにはならないような気がするし、翻訳ソフトを通した方がはるかにマシだし。
(翻訳ソフトの売ってない言語ってのもあり得ますが)
それとも『編物用』ってのがミソで、網目表(とでも言えばいいのかな?)が、原書と日本で使用されているもので表現が異なり、当然翻訳ソフトも使用できないので困っているというところでしょうか?
変換表を用意しておいて、変換元の単語(?)の長い順に置き換えすれば何とかなるかな?
という予想もありますが、変換先の単語内に変換元の単語が含まれていない事が保証されるかどうか、という仕様上の問題もありますね。
この回答への補足
ありがとうございます
まだまだ、初心者で、VB自体を使いこなせてないので
質問自体が稚拙な事なのかもわかりませんが・・・・・
そうなんです
編物をされていないと分かりずらいかと思いますが
例えば
K と書いてあると、表目で
k up と書いてあると、引き上げ編み
という編み方をしてください
という意味なんです
単語も、全部分かっている訳でなく
以降、追加していこうと思っています。
>変換表を用意しておいて
ということで、データーベース化することにしました。
まだまだ、ですが、
他の方の回答も踏まえて、頑張ってみたいと思います
ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字コードの%E3%80%とは何です...
-
SJIS->UTF8->SJISコード変換に...
-
文字化けしてしまって困っています
-
テキストをhtml変換するには
-
Delphiの型変換
-
漢字からカタカナ変換マクロ
-
ローマ字からカナに変換する方...
-
エクセルで数値を全角文字(カ...
-
半角・全角の由来
-
「何とかで始まり、何とかで終...
-
Excel・ユーザーフォームの情報...
-
数字を文字列に変換し短縮化する
-
全角入力
-
住宅にカナを入力する際に丁目...
-
VBAでシングルクオート(8217)を...
-
CSVファイルの中で、「 , 」カ...
-
【ExcelVBA】英数記号の半角変換
-
メール(iso-2022-jp-2)のデコ...
-
VBA(Excel)でファイル内の文字...
-
角カッコが含まれてるかどうか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでPDFファイルをMicro...
-
CString から LPCTSTRの型に変換
-
文字コードの%E3%80%とは何です...
-
SJIS->UTF8->SJISコード変換に...
-
VB6にも「ToString」ってあり...
-
VBScript文字列をSJISからUTF8...
-
URLが日本語なのになぜ表示...
-
Visual Studio プロパティペー...
-
算用数字(半角)から漢数字へ...
-
エクセルでの漢字(全角ひらが...
-
文字化けしてしまって困っています
-
ローマ字からカナに変換する方...
-
ひらがなから全角カタカナへの...
-
改行を含んだ文字列を正規表現...
-
五十音の並べ替えsortを教えて...
-
CString型からdouble型への変換
-
gccでiconvを使った文字コード...
-
シャープ(#)の受け渡し
-
テキストをhtml変換するには
-
【PHP】全角記号を半角記号...
おすすめ情報