1

CF10を使用してスプレッドシートインポーターを構築しているため、現在、文字列が正確に真か偽かを検証しようとしています。

私のユーザーは、次のいずれかを入力します。

  1. NULL、これは false と同等です
  2. 明らかに true に相当する TRUE
  3. FALSE これも false と同等です。

isValid('boolean',variable.data)を使用して、データが実際にブール文字列であるかどうかを検証しようとしています。trueただし、かなりの数の投稿を読んだ後、正の数でfalseあるか負の数であるかなどを検証することがわかります.

文字列に対してブール値の検証を簡単に機能させるための簡単な修正を誰かが持っているかどうか疑問に思っていますか? これは、正しく機能させるための正規表現のシナリオですか?

どんな助けでも大歓迎です。

4

3 に答える 3

8

リテラル文字列「NULL」を意味すると仮定すると、1 つのオプションはリスト関数を使用することです。許可された値のリスト、つまり「true、false、null」を検索します。エントリが見つかった場合、それは有効です:

<cfif listFindNoCase("true,false,null", theValue)>
    this is a valid boolean value
<cfelse>
    not found. do something here...
</cfif>

次に、単純な文字列比較falseでは、リテラル文字列「true」以外のすべてが返されます。

  isTrue = compareNoCase(e, "true") eq 0 ? true : false`
于 2013-09-17T08:29:53.180 に答える
4

文字列が正確に「真」または「偽」であるかどうかを評価する必要がある場合、ブール比較を行っているのではなく、文字列比較を行っています。

compare()したがって、そのためには、 orを使用したいと思うでしょうcompareNoCase()(どれだけ厳密にする必要があるかによって異なります)。

于 2013-09-17T08:25:39.520 に答える