HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0919
ゆうたろうろん文字列変数の一部を置き換えるには・・・5解決


ゆうたろうろん

リンク

2009/9/19(Sat) 11:53:45|NO.27775

タイトルどおりですが、変数の一部を置き換えるにはどうしたらいいでしょうか?
 
(例)
abc1def1ghi →1を2に置き換え→ abc2def2ghi
ああ\いい\うう →\を<BR>に置き換え→ ああ<BR>いい<BR>うう

テキストエディタから簡単なHTMLにできたらなと思っています。
よろしくおねがいします。



この記事に返信する


f(暇潰中)

リンク

2009/9/19(Sat) 12:10:27|NO.27776

とりあえず、strlen、instr、strmidとエディタに打って、
カーソルをそれぞれに合わせてf1押せば良いんでね。

後はif文が分かれば、これ等の組み合わせで作れるだろ。


・変換したい文字列の位置は何処か
・変換したい文字列の手前までの文字列の切り取り
・変換したい文字列から後の文字列の切り取り
・手前文字列+変換後文字列+残り文字列で新しい文字列を作る

これで、変換したい文字列が見つからなくなるまで繰り返すだけだ。



ゆうたろうろん

リンク

2009/9/20(Sun) 17:32:20|NO.27813

なるほど・・・できましたぁ!
前後を切って貼るのを繰り返す・・・思いつきませんでした^^;
ありがとうございました!



レノス

リンク

2009/9/20(Sun) 20:47:23|NO.27821

解決したようなので、蛇足です。

HSP開発wiki に、文字列の置換を行うモジュールがあるので、参考にどうぞ。
http://hspdev-wiki.net/?Module%2F%CA%B8%BB%FA%CE%F3%A4%CE%C3%D6%B4%B9



undefined

リンク

2009/9/23(Wed) 19:14:56|NO.27921

もう解決してるようですけどsplit命令を使ってこんなのはどうでしょうか?


#defcfunc strreplace str original,str bs,str as s=original split s,bs,results resultstr=results(0) foreach results if (cnt==0) : continue resultstr+=as+results(cnt) loop return resultstr



f(飲茶中)

リンク

2009/9/24(Thu) 10:13:43|NO.27943

あ、見てない間に解決したのね。おめでとう。

ちなみに、この方法だと、変換した文字列に返還前の文字列が含まれていたら、
永久に終わらなくなるから注意な。
「$」を見つけたら「$$$」に変換する、とかな。
そんな事態がありえないなら気にしなくていいが。


本格的にやるなら

・変換元文字列の文字数把握
・変換先文字列の文字数把握

・変換処理する対象の文字列に、変換元文字列が何件あるか集計する。
・新しい文字列が何文字になるか、元文字列と先文字列の文字数差と、発見件数を元に算出、その容量確保

・対象文字列をpeek,poke命令とかで新規文字列にコピーしながら、元文字列部分は先文字列に差し替えてゆく

こんな感じの処理にするほうが良いぞ。



ONION software Copyright 1997-2023(c) All rights reserved.