如何检测字符串值是否仅包含一个或多个逗号而没有其他内容。正确的值应该是这样的:ABC,BVC,BNM,但有时候我得到的值如:,或者,,,或者,,这是不允许的。如何检测一个字符串只有一个或多个逗号,然后我可以为用户创建一个警告并停止该过程。使用ColdFusion在字符串中查找一个或多个逗号
谢谢
如何检测字符串值是否仅包含一个或多个逗号而没有其他内容。正确的值应该是这样的:ABC,BVC,BNM,但有时候我得到的值如:,或者,,,或者,,这是不允许的。如何检测一个字符串只有一个或多个逗号,然后我可以为用户创建一个警告并停止该过程。使用ColdFusion在字符串中查找一个或多个逗号
谢谢
取决于有多少你的输入可能会有所不同,但你目前描述它:
东西作为<cfif MyVar contains ",,">
将工作一样简单。
如果一个逗号(,并没有别的)是可能的,那么
<cfif MyVar contains ",," OR Len(MyVar) lt 2>
您可以使用listToArray()
和arrayToList()
以从列表中删除空项目,然后可以像这样原来比较消毒版本:
<cfset originalInput = trim(",,,")>
<cfset sanitizedInput = arrayToList(listToArray(originalInput, ",", false), ",")>
<!--- Compare both --->
<cfif originalInput NEQ sanitizedInput>
<!--- Throw error --->
</cfif>
假设任何非逗号或者是字母或数字,你可以做使用正则表达式:
patternAlphaNumeric = "[0-9a-zA-Z]";
testString = ",,,";
if (reFind(",", testString) > 0 && refind(patternAlphaNumeric, testString) == 0)
code for all commas
else
code for other characters
如果您只关心检测逗号(或任何字符中的一个或多个),只需使用ListLen()即可。
所以,如果your_string只由一个或多个逗号,然后ListLen(your_string)始终返回0
抬起头,它也为空字符串返回0,因此,如果你不希望你的代码弹出空字符串,一定要说明这一点。
<cfset local.myString = "string-goes-here">
<cfset local.myNewString = ReReplace(trim(local.myString),",","","ALL")>
<cfif not len(local.myNewString)>
<!--- warning to the user and stop the process --->
</cfif>