Thread Rating:
  • 461 Vote(s) - 2.88 Average
  • 1
  • 2
  • 3
  • 4
  • 5
文字列チェック
09-26-2011, 02:00 PM, (This post was last modified: 09-27-2011, 05:04 PM by onyo.)
#2
RE: 文字列チェック
umemura の口様

(09-26-2011, 12:23 PM)umemura Wrote: 文字列の検証として、バイト数、半角・全角、数字、英数字などを行うにはどうすればいいのでしょうか。 数値チェックとはNumericValidatorを利用すればよさそうですが・・・。
regexp-subst プロシージャ で範囲指定してあげるのが簡単かと思います。
自分の場合バイトチェックは encode-characters を使用しました。
サンプルをのっけときます。

Code:
{import * from CURL.LANGUAGE.REGEXP}
|| 必須チェック
{define-proc public {must-check value:String, must:bool, trim-clone?:bool}:String
    {if trim-clone? then
        {if (must == true and {value.trim-clone} == "") then
            {return "必須入力です。"}
        }
     else
        {if (must == true and value == "") then
            {return "必須入力です。"}
        }
    }
    {return ""}
}

|| 全角ONLYチェック
{define-proc  {is-only-zenkaku in:String, max-chars:int, must:bool, trim-clone?:bool}:String
    
    let result:String = {must-check in, must, trim-clone?}
    {if result != "" then
        {return result}
    }
    
    {if in != "" then
        let s:String = in
        let exp:String = "[^ -~。-゚]"
        set s = {regexp-subst exp, s, "",replace-all? = true}
        {if s != "" then
            {return "全角文字で入力してください。"}
        }
    }
    let encodeout:ByteVec =
        {ByteVec
            max-size= {value in.size} *
            CharEncoding.ucs2-big-endian.transcode-min-expansion-factor
        }
    let encoding:CharEncoding =
        {get-character-encoding-by-name  "shift-jis"}
    
    let (int-used:int, out-made:int) =
        {encode-characters in, encodeout, encoding}
    
    {if out-made > max-chars then
        {return "サイズオーバーです。"}
    }
    
    {return result}

}
{let tf:TextField = {TextField width = 60pt}}
{VBox
    tf,
    {CommandButton
        label = "CheckValue",
        {on Action do
            let s:String = {is-only-zenkaku tf.value, 10, true, true}
            {if not s.empty? then
                {popup-message s}
            }
        }
    }
}


Messages In This Thread
文字列チェック - by umemura - 09-26-2011, 12:23 PM
RE: 文字列チェック - by onyo - 09-26-2011, 02:00 PM
RE: 文字列チェック - by usami - 09-26-2011, 05:32 PM
RE: 文字列チェック - by umemura - 07-03-2013, 04:16 PM
Forum Jump:


Users browsing this thread:
1 Guest(s)

MyBB SQL Error

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
1017 - Can't find file: 'mybb_threadviews' (errno: 2)
Query:
INSERT INTO mybb_threadviews (tid) VALUES('285')