2

文字列を2つのサブに分割しようとしています。最初の文字には最初の236(0から235)文字が含まれ、2番目の文字には237から文字列の終わりまでが含まれます。

firststr = str.Substring(0, 235)
secondstr = str.Substring(235, strLength)  'strLength is the total length of the string

strLengthがエラーを生成しています:インデックスと長さは文字列内の場所を参照する必要があります。パラメータ名:長さ

何か助けはありますか?

4

6 に答える 6

3

次のようなものが必要です。

secondstr = str.Substring(235, strLength - 235)

strLengthは文字列全体の長さであり、位置235から開始しているため、文字列の終わりを超えています。

于 2011-08-09T16:50:06.697 に答える
1

2番目の引数は、必要な文字数であり、終了位置ではありません。次のようなものを試してください:secondstr = str.Substring(235、strLength-235)(おそらく-1も必要です)

于 2011-08-09T16:50:19.453 に答える
1

通常、データの2番目の引数は、必要な部分文字列の長さ(この場合は)になりますstrLength-236。vb.netはわかりませんが、C#では、デフォルトで文字列の最後に配置されるため、サブ文字列を使用するときに2番目の変数strLengthを指定する必要はありません。secondstr

[編集]-修正

于 2011-08-09T16:50:39.627 に答える
1

文字列の最後に移動したいだけの場合は、Substringメソッドを使用するときにlengthパラメーターを省略できます。デフォルトでは、文字列の最後に移動します。

secondstr = str.Substring(236)

あなたのために仕事を成し遂げます。

于 2011-08-14T18:59:19.833 に答える
0

私が見るところ、あなたの変数strLengthは文字列の境界の外にある値を持っていますstr

于 2011-08-09T16:50:29.637 に答える
0

説明されているように、コード内の他のエラーを誰も拾い上げていないことに注意してください。

の2番目の引数Substringは返される長さであるためfirstStr、と同じLeft(str, 235)ものが含まれます。つまり、236ではなく235文字が含まれます。

完全を期すために、クエリに対するVBソリューションは次のとおりです。

firststr = Left(str, 236)
secondstr = Mid(str, 237)
于 2012-06-19T15:51:45.473 に答える