関数コード:
<%'** *********************************************** ****
'フィルター配列重複関数名: array_no(cxstr1,cxstr2,cxstr3)
'cxstr1: 任意の文字列、自動的に認識
'cxstr2: cxstr1 の分割記号。
'cxstr3: 結果の特定の位置にある文字列を抽出します。それが 0 に等しい場合はすべてを返し、配列の添字より大きい場合は最後の文字列を返します。二次元配列
'****** *********************************** *************
function array_no(cxstr1,cxstr2,cxstr3)
if len(cxstr3) > 0 then
if not IsNumeric(cxstr3) then
array_no = "申し訳ありませんが、パラメータ 3 の型は数値である必要があります"
関数終了
end if
else
array_no = "申し訳ありませんが、パラメータ 3 の型は数値である必要があります"
終了関数
end if
if isarray(cxstr1) then
array_no = "申し訳ありませんが、パラメーター 1 は配列にすることはできません"
終了関数
end if
if cxstr1 = "" または isempty (cxstr1) then
array_no = "データなし"
関数終了
end if
ss = split(cxstr1,cxstr2)
cxs=cxstr2&ss(0)&cxstr2
sss=cxs
for m = 0 to ubound(ss)
cc = cxstr2&ss(m )&cxstr2
if instr(sss,cc)=0 then
sss = sss&ss(m)&cxstr2
end if
next
array_no = right(sss,len(sss)-len( cxstr2))
array_no = left(array_no,len(array_no)-len(cxstr2))
if cxstr3 < ;> 0 then
cx_sp = split(array_no,cxstr2)
if cxstr3 > ; ubound(cx_sp) then
array_no = cx_sp(ubound(cx_sp))
else
array_no = cx_sp (cxstr3)
end if
end if
end function%>
以下はテストコードです:
<%s1 = "abc,aa,bb,cdef,bc,abcdef, hhgg,gggg,cde,edc"
s2 = "1,2,3,11,22,33,12, 13,14,11,33,333,14"
s3 = ""
s4 = "sdf,abc,12,2,2,abc"
s5 = split(s4)
response.write "文字列が文字の場合:"&array_no(s1,",",0)&"< ;br>"
response.write "文字列が数字の場合:"&array_no(s2,",",0)& "
"
response.write "文字列が空の場合: " &array_no(s3,",",0)&"
response.write "文字列が混在する場合: "&array_no(s4,",",0)&"
" >response.write "文字列が配列の場合: "&array_no(s5,",",0)&"
"
response.write "文字列が未知の変数の場合:"&array_no(s33, ",",0)&"
"
response.write "あるビットを抽出する場合、添字を超えない場合: "&array_no(s1,",",2)&"
"
response.write "特定のビットを抽出する際、添字を超えた場合: "&array_no(s1,",",200)&"< ;br>"%>
テスト結果:
文字列が文字の場合: abc,aa,bb,cdef,bc,abcdef,hhgg,gggg,cde,edc
文字列が数字の場合: 1,2,3,11,22 ,33,12,13,14,333
文字列が空の場合:データがありません
文字列が混在している場合:sdf,abc,12,2
文字列が配列の場合:申し訳ありませんが、パラメータ 1 は使用できません 配列
文字列が未知の変数:データがありません
あるビットを抽出する場合、添え字を超えない場合:bb
あるビットを抽出する場合、添え字を超える場合:edc
スクリプト ハウスの拡張バージョン:
一般的な配列エラーを解決します
コードをコピーします コードは次のとおりです:
'************************************ ***** ******************
'フィルター配列重複関数名: array_no(cxstr1,cxstr2,cxstr3)
'cxstr1: 任意の文字列、自動的に認識されます
'cxstr2: cxstr1 のシンボルを分割します。
'cxstr3: 結果の特定の位置にある文字列を抽出します。それが 0 に等しい場合はすべてを返し、配列の添字より大きい場合は最後の文字列を返します。二次元配列
'****** *********************************** *************
function array_no(cxstr1,cxstr2,cxstr3)
if len(cxstr3) > 0 then
if not IsNumeric(cxstr3) then
array_no = "申し訳ありませんが、パラメータ 3 の型は数値である必要があります"
関数終了
end if
else
array_no = "申し訳ありませんが、パラメータ 3 の型は数値である必要があります"
終了関数
end if
if isarray(cxstr1) then
array_no = "申し訳ありませんが、パラメーター 1 は配列にすることはできません"
終了関数
end if
if cxstr1 = "" または isempty (cxstr1) then
array_no = "データなし"
関数終了
end if
do while instr(cxstr1,",,")>0
cxstr1=replace(cxstr1," ,,",",")
ループ
if right(cxstr1, 1)=," then
cxstr1=left(cxstr1,len(cxstr1)-1)
end if
ss = split(cxstr1,cxstr2)
cxs=cxstr2&ss(0)&cxstr2
sss=cxs
m = 0 から ubound(ss) の場合
cc = cxstr2&ss(m)&cxstr2
if instr(sss,cc)=0 then
sss = sss&ss(m)&cxstr2
end if
next
array_no = right(sss,len(sss)-len(cxstr2))
array_no = left(array_no,len(array_no)-len(cxstr2))
if cxstr3 <> 0 then
cx_sp = split(array_no,cxstr2)
if ubound( cx_sp) then
array_no = cx_sp(ubound(cx_sp))
else
array_no = cx_sp(cxstr3)
end if
end if
end function
s1 = "abc,aa,bb,cdef,bc,abcdef,hhgg,gggg,cde,edc, 333,,,,,333,7,,,,"
s2 = "1,2,3,11, 22,33,12,13,14,11,33,333,14,333,,,,,333, 7,,,,"
s3 = ""
s4 = "sdf,abc,12,2,2 ,abc,333,,,,,333,7,,,,"
s5 = split(s4)
response.write "文字列が文字の場合:"&array_no(s1,",",0 )&"
"
response.write "文字列が数値の場合:"&array_no (s2,",",0)&"
response.write "文字列が数値の場合is empty:"&array_no(s3,",",0)&"
"
response.write "文字列が混合文字列の場合:"&array_no(s4,",",0)&"< ;br>gt;"
response.write "文字列が配列の場合:"&array_no(s5,",", 0)&"
"
response.write "文字列が未知の変数の場合:"&array_no(s33,",",0)&"
"
response.write "ある数字を抽出する場合、添え字を超えない: "&array_no(s1,",", 2)&"
"
response.write "特定の桁を抽出すると、添字を超えます: "&array_no(s1 ,",",200)&"
% >
主に判定を追加します
do while instr(cxstr1,",,")>0
cxstr1=replace(cxstr1,",,", ",")
loop
if right(cxstr1,1 )=、" then
cxstr1=left(cxstr1,len(cxstr1)-1)
end if