• 締切済み

文字列操作

Visual Basic6.0 よろしくお願いします。 [ab(c123de)f(ghij5)pq] のような文字列から ()で囲まれた文字列(c123de),(ghij5kl) の数字前の c, ghij を消して [ab(123de)f(5klmno)mnopq]にしたい 場合はどうすれば良いでしょうか? 便利な関数や方法がありましたら教えてください。 お願いいたします。

みんなの回答

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

正規表現での回答がでて、そちらの方がスマートで良いと思うが、泥臭くやると Sub test02() st = 1 a = "[ab(c123de)f(ghij5)pq](aaa)sd" fnd = "n" '数字を見つけたかどうかのフラグ pp0: p1 = InStr(st, a, "(") If p1 = 0 Then GoTo pp2 '(見つからず最終段階へ 'MsgBox p1 p2 = InStr(st, a, ")") s = s & Mid(a, 1, p1) For i = p1 + 1 To p2 '数字を見つける範囲の繰り返し If fnd = "y" Then s = s & Mid(a, i, 1) GoTo pp1 Else If IsNumeric(Mid(a, i, 1)) Then '数字を見つける fnd = "y" s = s & Mid(a, i, 1) Else End If End If pp1: Next i If fnd = "n" Then s = s & ")" 'MsgBox s st = p2 + 1 '繰り返しの用意 a = Mid(a, st, Len(a) - st + 1) 'MsgBox a fnd = "n" '繰り返しのための初期化 st = 1 GoTo pp0 pp2: s = s & a '(がみつからない段階で最終処理 MsgBox s End Sub テストデータが無いので十分テストできて無いが参考に。

Ksou
質問者

お礼

丁寧なアドバイス、ありがとうございました。(~0~)ノ

全文を見る
すると、全ての回答が全文表示されます。
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

正規表現オブジェクトを使うのが有効かと思います。 正規表現を使い、"("とその後に続く非数字を"("だけに置換します。 Function Rep(ByVal Txt As String) As String Dim RegExp Set RegExp = CreateObject("VBScript.RegExp") RegExp.Global = True '文中にある一致パターン全てを処理する RegExp.Pattern = "\(\D*" '検索パターン Rep = RegExp.Replace(Txt, "(") End Function 正規表現オブジェクト、正規表現の構文は下記を参照してください。 http://msdn.microsoft.com/ja-jp/library/cc392394.aspx http://msdn.microsoft.com/ja-jp/library/cc392020.aspx

Ksou
質問者

お礼

アドバイスありがとうございました。(~0~)ノ

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • EXCEL2003 指定した位置の文字列を取り出す

    "ABC,DEFG,H,IJ,KLMNO,PQ,RSTU"というような文字列に対して、「1」ならば"ABC"を、「5」ならば"KLMNO"を取り出したいと思います。 そういう関数があったと思うのですが思い出せません。 どなたか教えてください。 よろしくお願いします。

  • 文字列

    Visual Basic6.0 よろしくお願いします。 (ab"N1"cde"N11"fjh"N111"ij"N1111"k) のような文字列から (ab"N0001"cde"N0011"fjh"N0111"ij"N1111"k) のように N の後の数字を4桁数字にしたい 場合はどうすれば良いでしょうか? 便利な関数や方法がありましたら教えてください。 お願いいたします。

  • 文字列操作

    Visual Basic6.0 よろしくお願いします。 (1) a12bc34d56ef (2) a12bc3456 のような文字列から (1) 一番後ろの数字56 の前のa12bc34d (2) 一番後ろの数字3456 の前のa12bc を消して (1) 56ef (2) 3456 にしたい 場合はどうすれば良いでしょうか? 便利な関数や方法がありましたら教えてください。 お願いいたします。

  • A列の文字列からB列の文字列を

    A列の文字列からB列の文字列を 引く(マイナス)することはできないでしょうか? 例) A列 - B列 - C列 ABCD - CD - AB ABCD - BCD - A ABCD - GH - ABCD という風にC列に関数で結果を表示したいのです。 方法はないでしょうか? よろしくお願いします。

  • エクセルで数字とアルファベットと文字列を分割する方法

    こんばんは。 エクセルのセルで数字とアルファベットの文字列を分割する方法を教えて下さい。 100AB3.4C → "100" "AB" "3.4" "C" 間にスペースやカンマなど無く、文字数は異なります。 数字は小数点がある場合と無い場合があります。(上記の "100" "3.4" のように) 同じ列に同様のデータが数件~数千件あり、まとめて分割したいです。 関数もしくはマクロ(VBA)で可能であれば教えて下さい。 最近マクロの勉強を初めたのですが、方法が思いつきません。。。 宜しくお願いします。

  • スペースを含んだ文字列から文字列の抽出

    エクセルバージョン2007 スペースを含む文字列で、A列に文字列がある時、以下の式を組んで文字列を抽出しています。 先頭にIDの数字が有る場合は、それぞれの目的に合った文字列を抽出しています。 B1=LEFT(A1,SEARCH(" ",A1,1)-1) C1=LEFT(MID(A1,SEARCH(" ",A1,1)+1,LEN(A1)-SEARCH(" ",A1,1)),SEARCH(" ",MID(A1,SEARCH(" ",A1,1)+1,LEN(A1)-SEARCH(" ",A1,1)),1)-1) 3 3df-32654-10 CCCCHH 10 1ab-12345-00 AAABBBB この文字列の場合、B列に3と10が表示、C列に 3df-32654-10 1ab-12345-00が表示されます。 先頭に、IDの無い文字列は以下の様な構成です。 6rt-95132-00 PPPKKK この文字列の場合、B列に6rt-95132-00、C列にPPPKKKが表示されてしまい、この場合、IDの数字が無い場合はB列には表示させない又は、C列に6rt-95132-00させたいと思っています。 ご教授頂ければ幸いです。 以上、宜しくお願い致します。

  • 文字列の並び換え

    Visual BASIC 6で 文字列の並び換えの方法がわかりません 文字列には半角も全角もあって数字もあります。 if A$ < B$ then ではだめです。

  • 文字列の置換

    文字列を下記のように置換したいのですが ABC123 → AB123D (上記で固定でなく123の数字は変わっていきます) SUBSTITUTEでABCをABには置換できるのですが 数字の後にCをDの位置に移動させる なにか計算式や関数などありますか? これができるならば さらにネストすることはできますか? (上記のような変化をするイレギュラーの置換は式の中で1つだけです) =SUBSTITUTE(SUBSTITUTE・・・・ よろしくおねがいします。 エクセル2000でもできるやり方を希望します。

  • Perlでの文字列操作について

    Perlを使用しての文字列操作について教えてください。 たとえば以下のような数字とアルファベットが順に並ぶ文字列があるとします。 11A4C555D67B114B9423C アルファベットは1文字ですが、数字は何個でも連続で並びます。 この文字列を「数字アルファベット」の部分で分割し、配列に格納したいのですが、うまくいきません。 @array=('11A','4C','555D','67B','114B','9423C') どなたか教えてください。よろしくお願いいたします。

  • 文字列関数について

    よろしくお願いします。 「abcdefghijklmn」 このような文字列から dとjので囲まれた文字列「defghij」を 抜き出したい場合はどうすれば良いでしょうか? 正規表現を使用するのでしょうか? 便利な関数や方法がありましたら教えてください。 お願いいたします。

    • 締切済み
    • PHP
このQ&Aのポイント
  • TD20-KXの14インチのバスドラ用のヘッドが欲しいが、販売店ではスネア用のものしかない
  • スネア用のヘッドを代用できるか、または他の方法で手に入るかどうか知りたい
  • 電子楽器メーカーローランド製品やボス製品に対する問い合わせ
回答を見る