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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0831
宇木""で囲まれた文字列の取得2解決


宇木

リンク

2012/8/31(Fri) 16:43:07|NO.48970

変数data=""文字列a","文字列b","文字列c","文字列d","文字列e",\n"から文字列a 文字列b 文字列c 文字列d 文字列eだけを取り出したいのですが

まずgetstrの場合
getstr res(cnt), data, i, ','
if strsize = 0 : break
i += strsize
loop
で「,」区切りで取り出してから「"」を消去すれば良いのですが、もし文字列aにの中に「,」が含まれていると(例 Co., Ltd)結果が

Co.
Ltd.
文字列b
文字列c
文字列d
文字列e

のようになってしまいます。そこでspritと文字列の置換を使用し、
最初に変数dataを「",」を「"切り出し」に置き換え
data=""文字列a"切り出し"文字列b"切り出し"文字列c"切り出し"文字列d"切り出し"文字列e"切り出し\n"
次に
split data,"切り出し",res
としてみたのですが、結果が変わってしまい扱えなくなってしまいました。

どうすれば""で囲まれた文字列を切り出すことができますか?
文字列に「,」さえ含んでいなければgetstrで正常に動作したので、なるべくgetstrを使用したいのですが。



この記事に返信する


Rosh

リンク

2012/8/31(Fri) 18:40:39|NO.48972

自分はこんな風に処理しました。
「rcvStr」というのが処理する文字列変数です。

getstr gtst,rcvStr,Idx,',' ;; 「,」までを取得 rs = instr(gtst,0,"\"") if rs!-1 { ;; 「"」の有無をチェック getstr gtst,rcvStr,Idx+rs+1,'"' ;; 有れば「"」に囲まれた場所を抜き出す Idx += strsize+rs+2 }
取得した文字列に「"」が含まれていたら「" 〜 "」を切り出す処理に切り替える
というごく単純な処理です。



宇木

リンク

2012/8/31(Fri) 19:35:01|NO.48974

処理を切り替えるというのは思いつきませんでした。
このようにして取り出せました。ありがとうございました。

repeat
getstr gtst,rcvStr,Idx,','

rs = instr(gtst,0,"\"")
if rs!-1 {
getstr gtst,rcvStr,Idx+rs+1,'"'
Idx += strsize+rs+2
res(cnt) = gtst
}else{
Idx += strsize
res(cnt) = ""
}
if strsize = 0 : break
loop



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