来自字符串不同部分的子字符串

时间:2013-02-02 15:34:00

标签: c#

我有一个包含白色字符的字符串,我想从中对一些值进行子串。

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(' ');

但不幸的是,字符串名称还包含来自192的数字1 ..不应该。

有人可以解释......有什么不对吗?

4 个答案:

答案 0 :(得分:2)

Substring的第二个参数是“length”参数,而不是字符串中的位置。你需要减去起始位置。

也不是说你当前的版本包含“1.”之后的空格,所以Name实际上是“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

答案 1 :(得分: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];

这假设名称也不包含空格。

答案 2 :(得分:1)

问题在于您对Substring函数的第二个参数。它应该是:

string Name = mystring.Substring(mystring.IndexOf(' '), mystring.LastIndexOf(' ')-mystring.IndexOf(' '));

答案 3 :(得分:0)

你可以试试这个:

string mystring = "1. JoshTestLowdop 192";    

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

string FirstNO =strs[0];
string Name = strs[1];
string ID = strs[2];
相关问题