我有一个包含白色字符的字符串,我想从中对一些值进行子串。
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 ..不应该。
有人可以解释......有什么不对吗?
答案 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];