2017-07-07 36 views
1

如何检测字符串值是否仅包含一个或多个逗号而没有其他内容。正确的值应该是这样的:ABC,BVC,BNM,但有时候我得到的值如:,或者,,,或者,,这是不允许的。如何检测一个字符串只有一个或多个逗号,然后我可以为用户创建一个警告并停止该过程。使用ColdFusion在字符串中查找一个或多个逗号

谢谢

回答

0

取决于有多少你的输入可能会有所不同,但你目前描述它:

东西作为<cfif MyVar contains ",,">将工作一样简单。

如果一个逗号(,并没有别的)是可能的,那么

<cfif MyVar contains ",," OR Len(MyVar) lt 2> 
1

您可以使用listToArray()arrayToList()以从列表中删除空项目,然后可以像这样原来比较消毒版本:

<cfset originalInput = trim(",,,")> 
<cfset sanitizedInput = arrayToList(listToArray(originalInput, ",", false), ",")> 

<!--- Compare both ---> 
<cfif originalInput NEQ sanitizedInput> 

    <!--- Throw error ---> 

</cfif> 
0

假设任何非逗号或者是字母或数字,你可以做使用正则表达式:

patternAlphaNumeric = "[0-9a-zA-Z]"; 
testString = ",,,"; 

if (reFind(",", testString) > 0 && refind(patternAlphaNumeric, testString) == 0) 
code for all commas 
else 
code for other characters 
0

如果您只关心检测逗号(或任何字符中的一个或多个),只需使用ListLen()即可。

  • 这是一个本地的ColdFusion函数。
  • 它默认忽略空列表项。
  • 其默认分隔符是逗号。

所以,如果your_string只由一个或多个逗号,然后ListLen(your_string)始终返回0

抬起头,它也为空字符串返回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> 
相关问题