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


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
0819
数字のみ取得するには?4解決


リンク

2019/8/19(Mon) 22:17:29|NO.88146

int命令を使えば、文字列から整数に変換できますが、数字以外の文字を消して整数のみ取得することはできないのでしょうか?
例えば abc123defの場合、123だけ出したいのですが可能ですか?
調べても見つからなかったので質問します。

text=“abc123def” mes int(text)



この記事に返信する


リンク

2019/8/19(Mon) 22:21:33|NO.88147

打ち間違いです。
「”」ではなく「"」です。
すみません。



ソラ

リンク

2019/8/19(Mon) 22:56:36|NO.88149


text="abcあいうえお\^-@[]:;,./\漢字123def" sdim text_,strlen(text);textと同じ長さで初期化。 repeat strlen(text) a=peek(text,cnt);1バイトを抽出 ;10進数で48~57だったら数字。それをtext_に書き込む。 if a>=48 & a<=57:poke text_,ct,a:ct+1 loop mes int(text_)

こんな感じでどうでしょう?
正規表現とか使うともう少し綺麗にできると思いますが、
インクルードなしで数字だけ抽出するならこんなやり方もあります。



とあるプログラマ

リンク

2019/8/20(Tue) 13:44:40|NO.88152

ソラさんが仰っている正規表現での方法も載せておきます。(コメント見にくかったらすみません)


#include "mod_regexp.as" ;正規表現を扱うモジュール screen 0 sdim text text="abc123def" input text,200,20 button gosub "へんかん!",*convert stop *convert // replace関数 : 指定した文字列の内容を正規表現で置き換える // パラ1 : 置き換えられる(対象の)文字列 // パラ2 : 何を置き換えるか // パラ3 : 何に置き換えるか // ============================================ // 正規表現では「\D」が「数字以外」を示すので // 数字以外を無に置き換えている(つまり消す) // // 注! 正規表現は大文字小文字で意味が逆になるので // 「\d」だと「数字」を表すことになります。 // 詳細はHSPヘルプのmatch関数の説明か「正規表現 一覧」で調べてください // ここでも注意。HSPでの文字列で「\」を表すには // 「\\」と2連で書く必要があります。(エスケープシーケンス) // replace関数のみでは文字列としての数字が返されるので // intで整数に変換します。 result=int(replace(text,"\\D","")) mes result return



リンク

2019/8/21(Wed) 13:17:39|NO.88163

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



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