如何檢測字符串值是否僅包含一個或多個逗號而沒有其他內容。正確的值應該是這樣的: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>