ColdFusion용 getIntsFromRangeString UDF
6163 단어 cfmlcoldfusion
사람이 입력한 정수 목록의 유효성을 검사하는 데 유용합니다.
저는 일반 방문자가 이벤트 연도, 이벤트 장소, 전, 대회 수, 교육 시간 등과 관련하여 다양한 값을 검색하는 고객을 위한 검색 인터페이스 작업을 하고 있었습니다. 처음에 Google에서 "range slider "을 검색했습니다. 인터페이스에 추가할 수 있는 많은 대화형 위젯을 찾았습니다. 나는 개인적으로 각 슬라이더가 다른 범위를 나타내는 경험을 좋아하지 않았고, 같은 것을 나타내지 않기 때문에 서로 옆에 있는 것을 보는 것이 이상해 보였습니다.
고객이 처음에 제안한 또 다른 옵션은 시작 및 종료 드롭다운을 추가하는 것이었습니다. 이것은 방문자가 선택할 수 있도록 수백 개의 숨겨진
<option>
값을 생성하는 것을 의미합니다. 그런 다음 최대값이 최소값보다 작지 않도록 선택을 함께 연결하는 추가 클라이언트 측 논리가 필요합니다. 반대). 선택 + 서로 동기화를 유지하려면 많은 마우스 및 정신적 상호 작용이 필요하기 때문에 이것도 마음에 들지 않았습니다. (저는 개인적으로 가능할 때마다 저장+자동 완성을 위해 입력, 붙여넣기 또는 브라우저 확장 기능을 활용하는 것을 선호합니다.)사용자가 원하는 것을 입력하고 입력할 수 있는 문자를 제한하고(
0-9
, ,
, \s
및 -
) 값을 삭제하고 onchange
정수 목록(SQLIN
쿼리에 사용)을 생성하고 방문자에게 다시 시각적으로 표시하기 위해 제공된 숫자를 구문 분석하는 논리 서버 측. 숫자 목록을 허용하고 시각적 표시를 위한 시리즈를 생성하는 CFLib(2010년부터)에서 formatListAsSeries UDF을 찾았습니다. 정확히 반대되는 작업을 수행하고 논리적 최소/최대 규칙을 적용하는 방법을 알아내기만 하면 됩니다.여기 내 시도가 있습니다 ...
<cfset tests = [
["numberList": "0, 2021- , -1978, 1980-1984,1988, 1999, 8888, abc, 1920, 1E3", "minInt":1977, "maxInt":2022]
,["numberList": "2,1,6,,7,8,2, 2, 10, 1-3, 9.5", "minInt":1, "maxInt":10]
,["numberList": "0, 6, 4, 22, 100-200, 5, 😀 ", "minInt":0, "maxInt":10]
]>
<cfoutput>
<h3>getIntsFromRangeString(numberList, <i>minInt</i>, <i>maxInt</i>)</h3>
<cfloop array="#tests#" index="test">
<cfset a = racerSearch.getIntsFromRangeString(argumentcollection=test)>
<b>getIntsFromRangeString("#test.numberList#", <i>#test.minInt#</i>, <i>#test.maxInt#</i>)</b><br>
<b>SortedValues:</b> <tt>#serializeJson(a.sortedValues)#</tt><br>
<b>SeriesString:</b> <tt>"#a.seriesString#"</tt>
<hr>
</cfloop>
</cfoutput>
그러면 다음과 같은 출력이 생성됩니다.
getIntsFromRangeString("0, 2021- , -1978, 1980-1984,1988, 1999, 8888, abc, 1920, 1E3", 1977, 2022)
SortedValues: [1977,1978,1980,1981,1982,1983,1984,1988,1999,2021,2022]
SeriesString: "1977-1978, 1980-1984, 1988, 1999, 2021-2022"
------------------------------------
getIntsFromRangeString("2,1,6,,7,8,2, 2, 10, 1-3, 9.5", 1, 10)
SortedValues: [1,2,3,6,7,8,10]
SeriesString: "1-3, 6-8, 10"
--------------------------------
getIntsFromRangeString("0, 6, 4, 22, 100-200, 5, 😀 ", 0, 10)
SortedValues: [0,4,5,6]
SeriesString: "0, 4-6"
확인해보고 잊은 것이 있으면 알려주세요. 즐기다!
2022-09-20 업데이트: 성능 및 SQL 문자열 생성기에 대한 일부 업데이트를 수행했습니다.
CFML 소스 코드
https://gist.github.com/JamoCA/db753001d64a6fd4d46d2f591769c589
Reference
이 문제에 관하여(ColdFusion용 getIntsFromRangeString UDF), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gamesover/getintsfromrangestring-udf-for-coldfusion-n74텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)