HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

■14443 / 親記事)  文字列中に、4桁以上の数字が含まれているか検査したい
  
□投稿者/ TS -(2024/06/19(Wed) 22:21:59)
    桐V9 2012

     いつもお世話になっております。

     文字列の中に、4桁以上の数字が含まれているか検査したいと考えていますが、

    うまい方法が見つかりません。

     #IS数字(str,sw)のヘルプには、「文字列の中に数字が含まれているか検査します」とはありますが、

    含まれている数字の桁数の指定をする事が出来ません。

     良いお知恵が有れば、ご教示ただければと思います。

     よろしくお願いします。

    (例)

    [4桁以上の数字有無]、[文字列]

    〇 東京11大阪543北海道九州1234神奈川千葉789埼玉
    × 福岡fr76佐賀333熊本963鹿児島
    〇 青森D-432岩手秋田117258369abc新潟ppkk
    ・・・
引用返信 [メール受信/OFF] 削除キー/
■14444 / ResNo.1)  Re[1]: 文字列中に、4桁以上の数字が含まれているか検査したい
□投稿者/ くおんたむ -(2024/06/19(Wed) 23:27:25)
    どうも、TSさん

    スマートではないと思いますが、
    #文字数( "ワード" ) - #文字数( #S( "ワード", "123456789", "" ) )
    で 4以上になれば、4桁以上の数字として判断するのはどうですか?


引用返信 [メール受信/OFF] 削除キー/
■14445 / ResNo.2)  Re[1]: 文字列中に、4桁以上の数字が含まれているか検査したい
□投稿者/ ONnoji -(2024/06/20(Thu) 00:38:07)
    2024/06/20(Thu) 08:41:01 編集(投稿者)

    > 桐V9 2012
    >
    >  文字列の中に、4桁以上の数字が含まれているか検査したいと考えていますが、
    > うまい方法が見つかりません。
    >
    >  #IS数字(str,sw)のヘルプには、「文字列の中に数字が含まれているか検査します」とはありますが、
    > 含まれている数字の桁数の指定をする事が出来ません。
    >
    > (例)
    > [4桁以上の数字有無]、[文字列]
    > 〇 東京11大阪543北海道九州1234神奈川千葉789埼玉
    > × 福岡fr76佐賀333熊本963鹿児島
    > 〇 青森D-432岩手秋田117258369abc新潟ppkk
    > ・・・

    この問題は関数で一発解決とはいかないですよ。

    何故ならば、連続するか否かと文字数をテストしなければならないからです。

    こういう繰り返し操作が必要な問題は関数では出来ませんよ。

    添付ファイルをアップしますのでご参考にしてください。

    なお、数日を目途に添付ファイルは削除しますので、ダウンロードはお早めに願います。

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    名札  メイン



    手続き定義開始 cmd連続する4桁の数字を絞り込みClick( )
     変数宣言 自動,文字列{ &title = "cmd連続する4桁の数字を絞り込みClick( )", &msg }
     変数宣言 自動,文字列{ &string, &判定 }

     解除 *
     置換 [4桁以上の数字有無] = #u
     ジャンプ 行番号 =先頭
    ┌繰り返し ( .not #eof )

    │ &string = [文字列]
    │ 手続き実行 prc判定( &string, &判定 )

    │ 行訂正 [4桁以上の数字有無] = &判定

    │ ジャンプ 行番号 =次行
    └繰り返し終了

    手続き定義終了

    手続き定義開始 prc判定( 文字列 &string, 参照 文字列 &判定 )
     変数宣言 自動,文字列{ &title = "prc判定( )", &msg }
     変数宣言 自動,文字列{ &chr }
     変数宣言 自動,整数 { &length }
     変数宣言 自動,整数 { &total }
     変数宣言 自動,整数 { &i, &loop, &step = 1 }

     &total = 0
     &判定 = "×"
     &length = #文字数( &string )
     &loop = &length
    ┌繰り返し &i = 1, &loop, &step

    │ &chr = #sstr( &string, &i, 1 )

    │┌if ( #is数字( &chr, 1 ) )
    ││ &total = &total + 1
    ││
    ││┌if ( &total = 4 )
    │││
    │││ &判定 = "〇"
    │││ トレース出力 _&chr, "  ", _#is数字( &chr, 1 ), "  ", _&total, "  ", _&string
    ←┼┼─繰り返し中止
    ││└end
    │├else
    ││ &total = 0
    │└end
    │ トレース出力 _&chr, "  ", _#is数字( &chr, 1 ), "  ", _&total, "  ", _&string

    └繰り返し終了

    手続き定義終了

    ■トレース結果

     :&chr : 東  #is数字( &chr, 1 ) : 0  &total : 0  &string : 東京11大阪543北海道九州1234神奈川千葉789埼玉
     :&chr : 京  #is数字( &chr, 1 ) : 0  &total : 0  &string : 東京11大阪543北海道九州1234神奈川千葉789埼玉
     :&chr : 1  #is数字( &chr, 1 ) : 1  &total : 1  &string : 東京11大阪543北海道九州1234神奈川千葉789埼玉
     :&chr : 1  #is数字( &chr, 1 ) : 1  &total : 2  &string : 東京11大阪543北海道九州1234神奈川千葉789埼玉
     :&chr : 大  #is数字( &chr, 1 ) : 0  &total : 0  &string : 東京11大阪543北海道九州1234神奈川千葉789埼玉
     :&chr : 阪  #is数字( &chr, 1 ) : 0  &total : 0  &string : 東京11大阪543北海道九州1234神奈川千葉789埼玉
     :&chr : 5  #is数字( &chr, 1 ) : 1  &total : 1  &string : 東京11大阪543北海道九州1234神奈川千葉789埼玉
     :&chr : 4  #is数字( &chr, 1 ) : 1  &total : 2  &string : 東京11大阪543北海道九州1234神奈川千葉789埼玉
     :&chr : 3  #is数字( &chr, 1 ) : 1  &total : 3  &string : 東京11大阪543北海道九州1234神奈川千葉789埼玉
     :&chr : 北  #is数字( &chr, 1 ) : 0  &total : 0  &string : 東京11大阪543北海道九州1234神奈川千葉789埼玉
     :&chr : 海  #is数字( &chr, 1 ) : 0  &total : 0  &string : 東京11大阪543北海道九州1234神奈川千葉789埼玉
     :&chr : 道  #is数字( &chr, 1 ) : 0  &total : 0  &string : 東京11大阪543北海道九州1234神奈川千葉789埼玉
     :&chr : 九  #is数字( &chr, 1 ) : 0  &total : 0  &string : 東京11大阪543北海道九州1234神奈川千葉789埼玉
     :&chr : 州  #is数字( &chr, 1 ) : 0  &total : 0  &string : 東京11大阪543北海道九州1234神奈川千葉789埼玉
     :&chr : 1  #is数字( &chr, 1 ) : 1  &total : 1  &string : 東京11大阪543北海道九州1234神奈川千葉789埼玉
     :&chr : 2  #is数字( &chr, 1 ) : 1  &total : 2  &string : 東京11大阪543北海道九州1234神奈川千葉789埼玉
     :&chr : 3  #is数字( &chr, 1 ) : 1  &total : 3  &string : 東京11大阪543北海道九州1234神奈川千葉789埼玉
     :&chr : 4  #is数字( &chr, 1 ) : 1  &total : 4  &string : 東京11大阪543北海道九州1234神奈川千葉789埼玉
     :&chr : 福  #is数字( &chr, 1 ) : 0  &total : 0  &string : 福岡fr76佐賀333熊本963鹿児島
     :&chr : 岡  #is数字( &chr, 1 ) : 0  &total : 0  &string : 福岡fr76佐賀333熊本963鹿児島
     :&chr : f  #is数字( &chr, 1 ) : 0  &total : 0  &string : 福岡fr76佐賀333熊本963鹿児島
     :&chr : r  #is数字( &chr, 1 ) : 0  &total : 0  &string : 福岡fr76佐賀333熊本963鹿児島
     :&chr : 7  #is数字( &chr, 1 ) : 1  &total : 1  &string : 福岡fr76佐賀333熊本963鹿児島
     :&chr : 6  #is数字( &chr, 1 ) : 1  &total : 2  &string : 福岡fr76佐賀333熊本963鹿児島
     :&chr : 佐  #is数字( &chr, 1 ) : 0  &total : 0  &string : 福岡fr76佐賀333熊本963鹿児島
     :&chr : 賀  #is数字( &chr, 1 ) : 0  &total : 0  &string : 福岡fr76佐賀333熊本963鹿児島
     :&chr : 3  #is数字( &chr, 1 ) : 1  &total : 1  &string : 福岡fr76佐賀333熊本963鹿児島
     :&chr : 3  #is数字( &chr, 1 ) : 1  &total : 2  &string : 福岡fr76佐賀333熊本963鹿児島
     :&chr : 3  #is数字( &chr, 1 ) : 1  &total : 3  &string : 福岡fr76佐賀333熊本963鹿児島
     :&chr : 熊  #is数字( &chr, 1 ) : 0  &total : 0  &string : 福岡fr76佐賀333熊本963鹿児島
     :&chr : 本  #is数字( &chr, 1 ) : 0  &total : 0  &string : 福岡fr76佐賀333熊本963鹿児島
     :&chr : 9  #is数字( &chr, 1 ) : 1  &total : 1  &string : 福岡fr76佐賀333熊本963鹿児島
     :&chr : 6  #is数字( &chr, 1 ) : 1  &total : 2  &string : 福岡fr76佐賀333熊本963鹿児島
     :&chr : 3  #is数字( &chr, 1 ) : 1  &total : 3  &string : 福岡fr76佐賀333熊本963鹿児島
     :&chr : 鹿  #is数字( &chr, 1 ) : 0  &total : 0  &string : 福岡fr76佐賀333熊本963鹿児島
     :&chr : 児  #is数字( &chr, 1 ) : 0  &total : 0  &string : 福岡fr76佐賀333熊本963鹿児島
     :&chr : 島  #is数字( &chr, 1 ) : 0  &total : 0  &string : 福岡fr76佐賀333熊本963鹿児島
     :&chr : 青  #is数字( &chr, 1 ) : 0  &total : 0  &string : 青森D-432岩手秋田117258369abc新潟ppkk
     :&chr : 森  #is数字( &chr, 1 ) : 0  &total : 0  &string : 青森D-432岩手秋田117258369abc新潟ppkk
     :&chr : D  #is数字( &chr, 1 ) : 0  &total : 0  &string : 青森D-432岩手秋田117258369abc新潟ppkk
     :&chr : -  #is数字( &chr, 1 ) : 0  &total : 0  &string : 青森D-432岩手秋田117258369abc新潟ppkk
     :&chr : 4  #is数字( &chr, 1 ) : 1  &total : 1  &string : 青森D-432岩手秋田117258369abc新潟ppkk
     :&chr : 3  #is数字( &chr, 1 ) : 1  &total : 2  &string : 青森D-432岩手秋田117258369abc新潟ppkk
     :&chr : 2  #is数字( &chr, 1 ) : 1  &total : 3  &string : 青森D-432岩手秋田117258369abc新潟ppkk
     :&chr : 岩  #is数字( &chr, 1 ) : 0  &total : 0  &string : 青森D-432岩手秋田117258369abc新潟ppkk
     :&chr : 手  #is数字( &chr, 1 ) : 0  &total : 0  &string : 青森D-432岩手秋田117258369abc新潟ppkk
     :&chr : 秋  #is数字( &chr, 1 ) : 0  &total : 0  &string : 青森D-432岩手秋田117258369abc新潟ppkk
     :&chr : 田  #is数字( &chr, 1 ) : 0  &total : 0  &string : 青森D-432岩手秋田117258369abc新潟ppkk
     :&chr : 1  #is数字( &chr, 1 ) : 1  &total : 1  &string : 青森D-432岩手秋田117258369abc新潟ppkk
     :&chr : 1  #is数字( &chr, 1 ) : 1  &total : 2  &string : 青森D-432岩手秋田117258369abc新潟ppkk
     :&chr : 7  #is数字( &chr, 1 ) : 1  &total : 3  &string : 青森D-432岩手秋田117258369abc新潟ppkk
     :&chr : 2  #is数字( &chr, 1 ) : 1  &total : 4  &string : 青森D-432岩手秋田117258369abc新潟ppkk

引用返信 [メール受信/OFF] 削除キー/
■14446 / ResNo.3)  Re[1]: 文字列中に、4桁以上の数字が含まれているか検査したい
□投稿者/ MAKOTO -(2024/06/20(Thu) 11:27:14)
    TSさんこんにちは
    以下のような表定義でいかがでしょうか


ts.zip
/1KB
引用返信 [メール受信/OFF] 削除キー/
■14447 / ResNo.4)  Re[2]: 文字列中に、4桁以上の数字が含まれているか検査したい
□投稿者/ ONnoji -(2024/06/20(Thu) 17:29:50)
    >  文字列の中に、4桁以上の数字が含まれているか検査したいと考えていますが

    添付ファイルは、全角の数字と半角の数字を区別していませんが、

    ひょっとして、半角の数字だけが対象になりますか???

引用返信 [メール受信/OFF] 削除キー/
■14448 / ResNo.5)  Re[1]: 文字列中に、4桁以上の数字が含まれているか検査したい
□投稿者/ TS -(2024/06/20(Thu) 21:48:18)
    くおんたむ 様
    ONnoji 様
    MAKOTO 様

     回答いただきまして有難うございます。 数字をヌルで文字置換し文字数を引き算で数えて判定す方法、

    フォームとkevで一文字ずつ判定する方法、#計算により順次変数への代入し判定する方法など

    どの方法も私には到底思いつかない素晴らしい方法と感激しています。

     いつかは、自分もこのような計算式やkevが作れるよう勉強させていただきたいと思います。


    (ONnoji 様)
    > ひょっとして、半角の数字だけが対象になりますか???

     半角数字だけです。ダウンロードさせていただいたファイルでやりたいことは実現できています。


     3つの方法を一つ一つ勉強させていただき、自分として理解でき・・・そうな方法で行いたいと思います。

     この判定は桐では出来ないのではと、自分では半ば諦めていたものなので、大変助かりました。

     本当にありがとうございました。

解決済み!
引用返信 [メール受信/OFF] 削除キー/
■14449 / ResNo.6)  Re[3]: 文字列中に、4桁以上の数字が含まれているか検査したい
□投稿者/ ONnoji -(2024/06/20(Thu) 23:16:45)
    2024/06/20(Thu) 23:18:43 編集(投稿者)

    >> ひょっとして、半角の数字だけが対象になりますか???
    > 半角数字だけです。ダウンロードさせていただいたファイルでやりたいことは実現できています。

    半角の数字だけを対象にするのであれば、以下のように修正してください。
    ・・・・・・・・・・・・・

    【修正前】

     if ( #is数字( &chr, 1 ) )

    【修正後】

     if ( #is数字( &chr, 1 ) .and #is半角( &chr, 1 ) )

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇


    名札  メイン



    手続き定義開始 cmd連続する4桁の数字を絞り込みClick( )
     変数宣言 自動,文字列{ &title = "cmd連続する4桁の数字を絞り込みClick( )", &msg }
     変数宣言 自動,文字列{ &string, &判定 }

     解除 *
     置換 [4桁以上の数字有無] = #u
     ジャンプ 行番号 =先頭
    ┌繰り返し ( .not #eof )

    │ &string = [文字列]
    │ 手続き実行 prc判定( &string, &判定 )

    │ 行訂正 [4桁以上の数字有無] = &判定

    │ ジャンプ 行番号 =次行
    └繰り返し終了

    手続き定義終了

    手続き定義開始 prc判定( 文字列 &string, 参照 文字列 &判定 )
     変数宣言 自動,文字列{ &title = "prc判定( )", &msg }
     変数宣言 自動,文字列{ &chr }
     変数宣言 自動,整数 { &length }
     変数宣言 自動,整数 { &total }
     変数宣言 自動,整数 { &i, &loop, &step = 1 }

     &total = 0
     &判定 = "×"
     &length = #文字数( &string )
     &loop = &length
    ┌繰り返し &i = 1, &loop, &step

    │ &chr = #sstr( &string, &i, 1 )

    │ **if ( #is数字( &chr, 1 ) )
    │┌if ( #is数字( &chr, 1 ) .and #is半角( &chr, 1 ) ) /* 半角の数字だけを判定する */
    ││ &total = &total + 1
    ││
    ││┌if ( &total = 4 )
    │││
    │││ &判定 = "〇"
    │││ トレース出力 _&chr, "  ", _#is数字( &chr, 1 ), "  ", _&total, "  ", _&string
    ←┼┼─繰り返し中止
    ││└end
    │├else
    ││ &total = 0
    │└end
    │ トレース出力 _&chr, "  ", _#is数字( &chr, 1 ), "  ", _&total, "  ", _&string

    └繰り返し終了

    手続き定義終了


引用返信 [メール受信/OFF] 削除キー/
■14450 / ResNo.7)  Re[2]: 文字列中に、4桁以上の数字が含まれているか検査したい
□投稿者/ うにん -(2024/06/21(Fri) 17:11:34)
    数字を全部「0に置換して、「0000」を探せばOKでは。
    #文字位置(#文字置換(#文字置換(#文字置換(#文字置換(#文字置換(#文字置換(#文字置換(#文字置換(#文字置換([A],"1","0"),"2","0"),"3","0"),"4","0"),"5","0"),"6","0"),"7","0"),"8","0"),"9","0"),"0000")>0
引用返信 [メール受信/OFF] 削除キー/
■14451 / ResNo.8)  Re[3]: 文字列中に、4桁以上の数字が含まれているか検査したい
□投稿者/ TS -(2024/06/22(Sat) 11:32:09)
    うにん 様

     回答いただきましてありがとうございます。

    > 数字を全部「0に置換して、「0000」を探せばOKでは。

     確かにおっしゃる通りです。"0000")>0 で4桁、"00000")>0 で5桁 ・・・

    と指定すればできるようになるのですね。

     私は、どうしても「1234」などの数字が連続したものを文字列の中から

    どうやれば探せるのかと悩んでいました。

     大変勉強になりました。

     ありがとうございました。
解決済み!
引用返信 [メール受信/OFF] 削除キー/



スレッド内ページ移動 / << 0 >>

このスレッドに書きこむ

Mode/  Pass/

HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -