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

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



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.88146への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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