• ベストアンサー

(たとえばreplace関数で)すべての文字列に対して置き換えを行うに

(たとえばreplace関数で)すべての文字列に対して置き換えを行うには? よろしくお願いします。 ACCESSとVBをやっているのですが、 A行には下記の文字列があるとします。 BBBCCCDDD EEEGGGGFFF ああいいいいうう えええええおおほほほ これらについて、 「初めの3文字を***に置き換える」 「前から4文字目から3つを***に置き換える」 「最後の3文字を***に置き換える」 と言ったことは関数で可能なのでしょうか?

  • qc4
  • お礼率78% (183/234)

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

わかり難いのでサンプルを、ABCDEFGHIJK とします。 「初めの3文字を***に置き換える」 "***" & mid("ABCDEFGHIJK",4) "***" & right("ABCDEFGHIJK",len("ABCDEFGHIJK")-3) ***DEFGHIJK 「前から4文字目から3つを***に置き換える」 left("ABCDEFGHIJK",3) &"***" & mid("ABCDEFGHIJK",7) ABC***GHIJK 「最後の3文字を***に置き換える」 strreverse("***" & mid(strreverse("ABCDEFGHIJK"),4)) ABCDEFGH*** left("ABCDEFGHIJK",len("ABCDEFGHIJK")-3)& "***" ABCDEFGH*** など

qc4
質問者

お礼

ありがとうございます。いろいろ応用できそうですね。

その他の回答 (1)

  • MRT1452
  • ベストアンサー率42% (1392/3296)
回答No.1

言語のバージョンによって微妙に違うかもしれませんが。 mid関数で可能かと。 mid(元の文字列,開始位置,置換え文字数) = 置換え文字 で出来ると思います。 ただ、最後の数文字を置換えという点に関しては、元の文字列が固定長ではない場合、 開始位置を算出する処理を事前に入れる必要が有るかと。 これは len(元の文字列) - 変換する文字数 で出るかと。 (1文字目の指標が0か1かで補正が必要になります。)

qc4
質問者

お礼

ありがとうございました。 参考にします。

関連するQ&A

  • [Access2000] Replace関数がない?

    レコードの特定文字列を置換しようと思い、いろいろ調べたところ、Access2000から「Replace」関数というのが使えるようになったとのこと。 早速クエリーで使用したところ、「式の中に未定義関数 Replace があります」というエラー表示が…。式ビルダの組み込み関数を確認しましたが、Replaceという関数はやはり存在しないようです。 何か間違っているのでしょうか?お力添えいただければ幸いです。

  • 文字列に対してPHP上で一括置き換えしたい

    DBにあるテーブルの指定されたカラム全てを文字列に対してPHP上で一括置き換えしたいです。 phpアドミン上でSQL文を使って UPDATE `テーブル名` SET フィールド名A=REPLACE (フィールド名A,"置換前の文字列","置換後の文字列"); で実行したらうまくいくのですが、 これをPHP上で処理したいと考えてます。 require("godb.php");//DBにアクセス $sql ="UPDATE テーブル名 SET フィールド名 = REPLACE(フィールド名,"AAA","BBB")"; mysql_query($sql2); と実行してもうまくいきません。。。 これって、、、一個一個対象カラムをPHP上で取り出してから 処理をかけないといけないのでしょうか。。 アドバイスいただけたら幸いです。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 文字列全体に対する置き換え [正規表現]

    正規表現での文字列全体に対する、マッチ箇所 への置き換えについて、アドバイスをもらえないでしょうか。 parlでいうg修飾子はphpには無く、 例えば、[preg_match]は[preg_match_all]という関数で対応出来ますが、 置き換えを行う[preg_replace]には[preg_replace_all]がありません。 それに類する関数も無いように思います。 これに関して、PHPではどのように対応すれば良いのでしょうか。

    • ベストアンサー
    • PHP
  • ereg_replaceの文字化けについて

    宜しくお願いします。 PHPで文字列の置き換えをする関数の『ereg_replace』についてですが、この関数を使う変数に『'』がはいると、置き換え後にその『'』の前に『\』が付いちゃうんですが、これを回避する方法は無いでしょうか?ちなみに、文字化けするソースを明記させて頂きます。 $title_edit = ereg_replace("/\x0D\x0A|\x0D|\x0A/","<br>","${title}"); 入力フォームでtextareaで入力された項目が$titleに入るのですが、textarea内でエンター改行した場合に、その改行コードをHTML上の<BR>タグに置き換えるというものなんですが、これを行うと、『'』の前に『\』が入ってしまうのです。原因が良く判らないで困っています。 お願いします!教えて下さい!!

    • ベストアンサー
    • PHP
  • 文字列の置き換え

    こんばんは。 VB6を使用しています。 mystring1 = "abcdefghij" mystring2 = "1234567890" という2つの文字列があります。 この文字列の一部(mystring1)をmystring2の一部で 置き換えたいのですが どのようにプログラムを組んだらいいのでしょうか? 例: c1 = Mid(mystring1, 5, 3)(="efg")を c2 = Mid(mystring2, 1, 3) (="123")で置き換えて mystring1 = "abcd123hij" と置き換えを行うことをしたい。 とても初歩的な質問ですがよろしくお願いします。

  • VB6のReplace関数の使い方

    お世話になります、 VisualVasic6.0でReplace関数というのが あると思うのですがその使い方を教えてください。 Replace("文字列","変換対象文字","変換文字","?","?") はてなの部分がよくわかりません よろしくお願いします。

  • エクセルの文字列中の指定した位置の文字列の置き換え(REPLACE)。

    エクセルの文字列中の指定した位置の文字列の置き換え(REPLACE)。 エクセルのセルA1に 「A123B1234X9876C123DD」と入力されています。 これを 「A123-B123X9876-C123-DD」としたいです。 現在 ・B1のセルに=REPLACE(A1,5,0,"-") ・C1のセルに=REPLACE(B1,15,0,"-") ・D1のセルに=REPLACE(C1,20,0,"-") と入れて、D1にできた値の 「A123-B123X9876-C123-DD」 をコピーして E1のセルに「形式を選択して貼り付け」「値」で貼り付けして B1~D1を削除して ・A1のセルには元の「A123B123X9876C123DD」 ・B1のセルには編集後の「A123-B123X9876-C123-DD」 が表示されるようにしています。 このA列が100行もあるとうんざりです。 式をオートフィルでコピーしていくのですが  ・B1に式を入れてオートフィルでB100までコピー  ・C1に式を入れてオートフィルでC100までコピー  ・D1に式を入れてオートフィルでD100までコピー  ・D1~D100をコピーしてE1~E100に「形式を選択して貼り付け」「値」で貼り付け  ・B,C,D列を列削除  3回は式を入れないといけないです。一発で編集する方法はありますでしょうか?

  • 文字列の置き換え

    はじめまして。正規表現とPHPで下記のような置き換えをしたいのですが、 どうしたら良いのでしょうか。 <a href="http://www.homepage.com/index.php?no=***">***</a> ↓置き換え <a href="javascript:Open('http://www.homepage.com/index.php?no=***')">***</a> ※***、***は毎回違うものが入りますが、その他の部分は全く同じです。 ※***は、半角英数字・「-」で構成されています。 文字数は色々です。 ※***は、かな・漢字などさまざまで、文字数も決まっていません。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 文字列を取り出す

    A列に[ No.××× ] あああああ・・・と入力されています。 毎回入力される行数が違います(100~300行) B列にNo.×××という文字列だけ取り出すために下記の関数が入っているのですが A列に入力のあった分だけをマクロで処理できませんか。 =LEFT(RIGHT(A2,LEN(A2)-FIND("[ No",A2,1)),8) 現在は300行目までこの関数が入った状態で、エクセルが重い気がします。

  • replace()での文字列置換について

    お世話になります。 replace()で文字列置換をするとき、 sentAry=new Array("aabb()c()bbc","・・・", sent=sentAry[0]; で、 sent=sent.replace("()","(   )") と、すると、 sent="aabb(   )c()bbc;" と、なることを期待したのですが、 sent="aabb(   )c(   )bbc;" と、なってしまいました。 つまり全ての()が(   )に変換されてしまいました。 マッチングした全ての文字列か、マッチングした最初の一つだけか が、グローバル検索のg属性と、いうものにより異なるというような記載を見つけましたが、 だからと、いってどのようにすればよいのか 一向にわかりません。 どなたか、わかる方見えましたら、よろしくご教示お願いします。

専門家に質問してみよう