アプリ版:「スタンプのみでお礼する」機能のリリースについて

読み込んだテキストファイルに中にある文字を別の文字に置換後、置換したファイルを再度保存したいと考えています。
どのようにすれば良いのでしょうか?
VB6を使用しています。
宜しくお願いします。

A 回答 (6件)

自信はありませんが


Replace関数とかを使うのはいかがでしょう?
    • good
    • 0

abc.txtの中の名古屋と言う文字列を名古屋北に置換えて


abc2.txtに書き出し。
abc.txtに書き戻しは出来ないはずで、別ファイルに書き出す。
Sub main()
Open "c:\my documents\abc.txt" For Input As #1
Open "c:\my documents\abc2.txt" For Output As #2
b = "名古屋"
c = "名古屋北"
lb = Len(b)
lc = Len(c)
While Not EOF(1)
Line Input #1, a
s = 1
ns = ""
l1:
p = InStr(s, a, b)
If p = 0 Then GoTo e1
ns = ns & Mid(a, s, p - s) & c
s = p + lb
GoTo l1
e1:
ns = ns & Mid(a, s, Len(a) - s + 1)
Print #2, ns
Wend
Close #1
Close #2
End Sub
(テスト例)
abc.txt
大阪,a,11,12,名古屋,45,名古屋
名古屋,b,13,14,名古屋,23,名古屋
東京,c,15,16,名古屋,56,名古屋
仙台,d,123,234,福岡,87,大阪
abc2.txt
大阪,a,11,12,名古屋北,45,名古屋北
名古屋北,b,13,14,名古屋北,23,名古屋北
東京,c,15,16,名古屋北,56,名古屋北
仙台,d,123,234,福岡,87,大阪
VBAではPeplace関数を使えると思います。
VB6でも使えるかもしれませんがInstr関数でやってみました。
    • good
    • 0

ご参考になれば・・・。

(対象:固定長データ)

固定長の置き換え(VBヘルプより)
Mid(文字列変数, 開始位置[, 置換長]) = 置換文字列
※詳細はヘルプを確認してください。

全角半角が混在している場合等にあると便利なルーチン
Function LenCntB(ByVal str As String) as Long
LenCntB = LenB(StrConv(str, vbFromUnicode))
End Function

正確な文字列のバイト数を返すルーチン
    • good
    • 0

VBがver6.0以降であればReplace


ヘルプをよく読んでみてください難しいことは書いてません。

ちなみにMSDNの検索で以下の条件でヒットしたトピックは6件。Replaceはしっかり含まれていました。
『文字列 AND 置換 AND 関数』
    • good
    • 0

#2です。

#1、#3、#4のご解答をヒントにして、
Replace関数が使えるようなので
Sub main()
Open "c:\my documents\abc.txt" For Input As #1
Open "c:\my documents\abc2.txt" For Output As #2
b = "名古屋"
c = "名古屋北"
lb = Len(b)
lc = Len(c)
While Not EOF(1)
Line Input #1, a
ns = Replace(a, b, c)
Print #2, ns
Wend
Close #1
Close #2
End Sub
を実行して同じ結果になりました。
    • good
    • 0

元のファイルに書き戻すことにこだわらないのであれば、



1. 1行読み込む
2. 置換処理を行う(後述)
3. 別のファイルに書き出す

を繰り返せば、置換した別のファイルが出来上がります。それを、必要であれば元のファイルを消して同じ名前に変えるなどすれば完成かと。

置換には、

1. Replace関数を使う
2. Instr関数、Mid関数などを使って置換箇所を探して置き換えていく

といったところが一般的ですかね。詳しくはVBのヘルプを見てください(上記関数に関するサンプルを少し作ってみれば、すぐに分かると思います)。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!