-4

白い文字を含む文字列があり、そこからいくつかの値を部分文字列にしたいと考えています。

string mystring = "1. JoshTestLowdop 192";
 (from 1. to J there's a whitespace)
string FirstNO = mystring.Substring(0, mystring.IndexOf(' '));
string Name = mystring.Substring(mystring.IndexOf(' '), mystring.LastIndexOf(' '));
string ID = mystring.Substring(mystring.LastIndexOf(' ');

しかし、残念ながら、文字列 Name には 192 の数字 1 も含まれています。これはすべきではありません。

誰かが説明できます..何が問題なのですか?

4

4 に答える 4

2

の 2 番目の引数Substringは、文字列内の位置ではなく、「長さ」パラメーターです。開始位置を減算する必要があります。

また、現在のバージョンには「1.」の後に空白が含まれているわけではないため、名前は実際には「JoshTestLowdop」です。実際の名前を取得するには、最初の部分文字列に 1 を追加する必要があります。

string mystring = "1. JoshTestLowdop 192";
int start = mystring.IndexOf(' ');
string FirstNO = mystring.Substring(0, start);
string Name = mystring.Substring(start + 1, mystring.LastIndexOf(' ') - (start + 1));
string ID = mystring.Substring(mystring.LastIndexOf(' ') + 1);
Console.WriteLine(FirstNO);
Console.WriteLine(Name);
Console.WriteLine(ID);

// outputs:
1.
JoshTestLowdop
192
于 2013-02-02T15:36:40.297 に答える
2

String.Splitメソッドを使用します。

string mystring = "1. JoshTestLowdop 192";

var splitted = mystring.Split(new(){' '});

string FirstNo = splitted[0];
string name = splitted[1];
string ID = splitted[2];

これは、名前に空白も含まれていないことを前提としています。

于 2013-02-02T15:38:55.353 に答える
1

問題は、Substring 関数の 2 番目のパラメーターにあります。そのはず:

string Name = mystring.Substring(mystring.IndexOf(' '), mystring.LastIndexOf(' ')-mystring.IndexOf(' '));
于 2013-02-02T15:38:27.470 に答える
0

これを試すことができます:

string mystring = "1. JoshTestLowdop 192";    

string[] strs = mystring.Split(' ');

string FirstNO =strs[0];
string Name = strs[1];
string ID = strs[2];
于 2013-02-02T15:39:02.653 に答える