• 締切済み

文字列の置換

VB6で開発してます。 以下のようなことをやりたいのですが、 効率のよい方法はないものでしょうか? <やりたいこと>  文字列1の中にある『_』と同じ位置にある  文字列2の文字を『_』に置き換えたい。  [変換前]   文字列1:12_3456_   文字列2:ABCDEFGH  [変換後]   文字列1:12_3456_   文字列2:AB_DEFG_ どなたかわかる方がいらっしゃったら教えて下さいm(_ _)m 

みんなの回答

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.5

質問をそのままコーディングしたら下のようになりました。 ご参考に。 Sub Okikae()   Dim strA As String, strB As String   Dim L As Integer   'カウンタ   strA = "12_3456_"   strB = "ABCDEFGH"   For L = 1 To Len(strA)     If Mid(strA, L, 1) = "_" Then  '文字列1の中に『_』があったら       Mid(strB, L, 1) = "_"    '文字列2のその位置を『_』で置き換える     End If   Next   MsgBox strB End Sub

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.4

下記を参考にしてください。 Sub test01() a = "12_234_5_6" b = "abcdefghijkl" s = 1 p1: p = InStr(s, a, "_") MsgBox p If p = 0 Then GoTo p2 Mid(b, p, 1) = "_" s = p + 1 GoTo p1 p2: MsgBox b End Sub 納得後にMsgBoxを外してください。

noname#4564
noname#4564
回答No.3

更に訂正です(汗) (恥の上塗り?) > (2) 等しくない場合は...... ご質問のケースでは1文字 → 1文字の置換と最初から要件が決まってますので、(2)の場合は考えなくていいです。m(_ _)m

noname#4564
noname#4564
回答No.2

No.1の訂正です。m(_ _)m > (2) 等しくない場合は...... (2)の場合は文字列連結演算子で繋げた方が簡単そうです。 (Replace関数でも、できなくはないと思いますが、この場合は面倒そう)

noname#4564
noname#4564
回答No.1

(1) 置換「前」の文字列と置換「後」の文字列の文字数が等しい場合は、   Instr関数とMid$ステートメントを使えば可能です。 (2) 等しくない場合は、Instr関数とReplace関数を使用すればよいでしょう。 ※ 代入演算子の右辺式で使用するのがMid$「関数」、左辺式で使用する   のがMid$「ステートメント」です。 ※ 上記(1)の場合は、Mid$ステートメントの方がReplace関数より高速に   処理できます。(正確なベンチマーク値等は失念)

関連するQ&A