-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

第二个参数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 函数的第二个参数上。它应该是:

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 回答