1

文字列に対して複数の分割を行うと奇妙な結果が得られたので、何が起こっているのかを理解するために簡単なテストを行うことにしました

testString "1234567891011121314151617181920"

Javascript で 10 から 20 の間の値を取得したい場合は、次のようにします。

var results = testString.split("10")[1].split("20")[0]

どちらが111213141516171819を返しますか

ただし、VBでこれを行うと、111が発生します

Split(testString,"10")(1).Split("20")(0)

何を入れても、2番目の分割は最初の文字しか認識していないようです。

そのため、文字列に次の「2」が見つかると停止します。「2abc」でも、その文字列が存在しなくても同じ結果になります。

4

4 に答える 4

2

String.Split には、文字列のみを受け取るオーバーロードはありません。引数は Char 配列または String 配列です。あなたの文字列はおそらくchar配列に変換されています。次のように明示的に文字列配列を渡します。

testString.Split(New String() { "10" }, StringSplitOptions.None)

于 2012-05-05T01:44:40.687 に答える
1

2 番目の分割をラップして、最初の分割のようにします。つまり、次のようになります。

Split( Split(testString,"10")(1), "20" )(0)"
于 2012-05-05T14:12:01.683 に答える
1

Vb は、区切り文字の引数を単一の文字としてのみ扱います。

于 2012-05-05T01:45:06.370 に答える