web-dev-qa-db-ja.com

クラシックASPで文字列を分割する方法

古典的なaspアプリケーションで文字列を分割しようとしていますが、ページに以下のコードがあり、機能していないようです。似ているように見えますが、異なるタイプの問題を扱っている別の質問があります。私はすでにそこの答えに行ったことがあり、それらは役に立ちません。どんな助けでもいただければ幸いです。

<% 
Dim SelectedCountries,CitizenshipCountry, Count 
SelectedCountries = "IN, CH, US"    
CitizenshipCountry = Split(SelectedCountries,", ")
Count = UBound(CitizenshipCountry) + 1 
Response.Write(CitizenshipCountry[0])
Response.End
%>
4
Vipin Dubey

いくつかの間違いを犯したため、期待した結果が得られません。

  1. 配列の境界をチェックするときは、配列変数を指定する必要があります。この場合は、Split()によって生成される変数です。これはCitizenshipCountryです。

  2. 配列要素にアクセスするには、要素の序数位置を括弧内に指定します(_(...)_)角括弧ではありません(_[...]_)

これを試して:

_<% 
Dim SelectedCountries, CitizenshipCountry, Count 
SelectedCountries = "IN, CH, US"    
CitizenshipCountry = Split(SelectedCountries,", ")
'Get the count of the array not the string.
Count = UBound(CitizenshipCountry)
'Use (..) when referencing array elements.
Call Response.Write(CitizenshipCountry(0))
Call Response.End()
%>
_

私がやりたいのは、これらのタイプのエラーを回避するために、UBound()を呼び出す前に、IsArrayを使用して変数に有効な配列が含まれていることを確認することです。

_<% 
Dim SelectedCountries, CitizenshipCountry, Count 
SelectedCountries = "IN, CH, US"    
CitizenshipCountry = Split(SelectedCountries,", ")
'Get the count of the array not the string.
If IsArray(CitizenshipCountry) Then
  Count = UBound(CitizenshipCountry)
  'Use (..) when referencing array elements.
  Call Response.Write(CitizenshipCountry(0))
Else
  Call Response.Write("Not an Array")
End If
Call Response.End()
%>
_
5
Lankymart

素晴らしい答えと良い解決策。文字列を配列に変換するときにForLookを追加しています:

Dim SelectedCountries、CitizenshipCountry、Count、x

SelectedCountries = "IN、CH、US"
CitizenshipCountry = Split(SelectedCountries、 "、") '文字列ではなく配列の数を取得します。 Count = UBound(CitizenshipCountry) '配列要素を参照するときに(..)を使用します。

for x = 0 To Count Response.Write(CitizenshipCountry(x)& "Break Tag HTML")

さらにヘルプが必要な場合は、mabbas.mit @ gmail.comまでご連絡ください。