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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0108
ポチ\記号を\\に置き換えたいのですが・・・。5解決


ポチ

リンク

2011/1/8(Sat) 20:04:01|NO.36571

またまた、初歩的な質問で申し訳ありません。
文字列の中の\を\\に置き換えたいのですが・・・
どうしたら良いでしょうか?

幾つかのサンプルスクリプトを見つけましたが、
どれも\が無視されてしまいます。



この記事に返信する


くうき

リンク

2011/1/8(Sat) 22:46:58|NO.36572

質問を返すようで悪いですが
\をふくむ文字列があるなかから\から\\に置き換えるというものですよね
そういうプログラムとして作りたいんですよね?
そうならこのスクリプトを参考にしていただければ

ちなみにプログラムでは処理系に依存しますが \+アルファベット で特殊な文字の出力をします
これをエスケープシーケンスといいます。
たとえばmes"aaaaa\naaaa"と途中に入力すると改行となります
なので今回は\\と表す場合\\\\と記述するのが正解です

sdim data,100 sdim kakunou,100 sdim kakunou2,100 //代入 data="abcdef\\ghijklmn" //文字の長さを検索 nagasa=strlen(data) mes"置き換え前 : "+data+"" repeat nagasa //\という文字がないか検索 index=instr(data , 0 , "\\") mes index if index=-1 and cnt=0 { mes"\\という文字列はありません" break } //\\があった文字の前後を抜き出す kakunou=strmid( data , 0 , index ) kakunou2=strmid( data , index+2 , nagasa-(index+2) ) //前後の文字列と\\をサンドで代入 data=kakunou + "\\\\" + kakunou2 loop //結果 mes"置き換え後 : "+data+""



info

リンク

2011/1/8(Sat) 23:39:57|NO.36573


txt = "a\\b\\c" mes txt split txt,"\\" , buff txt = buff repeat stat-1 , 1 txt +=strf("\\\\%s",buff.cnt) loop mes txt
split を使う方法もあります。



koih

リンク

2011/1/9(Sun) 00:46:18|NO.36574

正規表現使が一番簡単

#include "mod_regexp.as" txt = "a\\b\\c" txt2=replace(txt,"\\\\","\\\\") mes txt+"--->"+txt2



くうき

リンク

2011/1/9(Sun) 01:10:23|NO.36575

すみません、スクリプトにミスがあり
もう一番簡潔なスクリプトが出ているのですが
一応言っておきます
mes index
なくしてみてください
デバッグ中に入れ消すの忘れてしまいました



ポチ

リンク

2011/1/9(Sun) 03:48:39|NO.36577

くうきさん、丁寧な回答ありがとうございます。
infoさん、splitを使うと簡単に出来るのですね、ありがとうございます。
koihさん、replaceを使った正規表現でこんなにも簡潔に出来るなんて気が付きませんでした、
ありがとうございます。

参考までに私が格闘していたスクリプトです。

#module "srep_module" #deffunc sreplace var out,str base,str rbase,str rout sdim srep_array,512,1;作業用変数swp_arrayの初期化 srep_str==base;作業用変数srep_strにbaseを代入 split srep_str,rbase,srep_array;元の文字列を対象文字列を区切りとして分割 if length(srep_array)>=2{ ;分割した文字列同士の間に置換文字列を入れる srep_str==srep_array(0) repeat length(srep_array)-1,1 srep_str==srep_str+rout+srep_array(cnt) loop out == srep_str } return length(srep_array)-1 #global ;テスト x=="aaa\a\a\aaa" sreplace y,x,"\\","\\\\" mes y mes ""+stat+"回置換しました"

皆様本当にありがとうございます。



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