내 CF 응용 프로그램은 사용자가 자신의 파일에있는 구분 기호와 일치하도록 선택할 수있는 세 가지 선택 사항 (세미콜론, 쉼표 또는 탭)을 제공합니다. 사용자가 파일에서 구분 기호를 사용하여 선택한 항목의 유효성을 검사하려고합니다. 이것을 할 수있는 방법이 있습니까?ColdFusion에서 구분 기호의 유효성을 검사 할 수 있습니까?
그래서 나는이 오류가 발생합니다 사용자가 자신의 텍스트 파일 탭 구분 기호를 사용하지만 그는 실수로 쉼표를 선택한 경우 :
잘못된리스트 인덱스 기능 ListGetAt(list, index [, delimiters])
2.
, 인덱스, 2의 값, 첫 번째 인수로 유효하지 않습니다 (이 목록에는 1 개의 요소가 있음). 유효한 색인의 범위는 1에서 목록의 요소 수까지입니다.
나는이 오류 유형을 피할 수있는 유일한 방법은 사용자의 구분 기호가 파일에 사용되는지 확인하지만 웹을 검색 할 때 찾을 수없는 경우라고 생각합니다. 이 때문에 파일의 텍스트 단락이있는 경우이 끔찍하게 생각합니다, 그러나
<!--- read file into memory --->
<cfset fileContent = fileRead(expandPath("yourfile.csv"))>
<!--- declare delimiting characters to check, NOTE: due to using "listLen" you may only specify single characters --->
<cfset possibleDelimiters = [ ";", ",", chr(9) ]> <!--- chr(9) = tab --->
<!--- count number of records found for each delimiter --->
<cfset countResults = {}>
<cfloop array="#possibleDelimiters#" index="delimiter">
<cfset countResults[delimiter] = listLen(fileContent, delimiter)>
</cfloop>
<!--- determine delimiter with the highest count --->
<cfset sortedDelimiters = structSort(countResults, "NUMERIC", "DESC")>
<cfset mostFrequentDelimiter = sortedDelimiters[1]>
<cfoutput>
Is <code>#encodeForHtml(mostFrequentDelimiter)# (#asc(mostFrequentDelimiter)#)</code> the delimiter?
</cfoutput>
:
오류를 catch 한 다음 사용자에게 문서의 형식이 잘못되었다는 메시지를 표시하고 올바른 구분 기호를 선택했는지 확인할 수 있습니까? –
cftry cfcatch를 사용하여 오류를 잡으면됩니까? – MGL
그럴 수 있습니다. 그렇습니다. –