我将创建一个可以按索引获取列值的函数,然后根据需要重新使用它。这是一个示例:
public string GetValue(string row,int index)
{
var start = 0;
for (var i = 0; i < index; i++)
start = row.IndexOf('|',start + 1);
var end = row.IndexOf('|',start + 1);
if (end == -1)
end = row.Length;
return row.Substring(start,end - start)
.Replace("|",string.Empty).Trim();
}
var str = "698301 | 48380.80 | sam | aass@gmail.com | 5675767 | 3 | 40602.80 | 7778";
var a = GetValue(str,0);
var b = GetValue(str,1);
var c = GetValue(str,2);
var d = GetValue(str,3);
var e = GetValue(str,4);
var f = GetValue(str,5);
var g = GetValue(str,6);
var h = GetValue(str,7);
,
您非常接近,您只需要确保截去了所用字符串的一部分,并使用字符串中第一个|
的新位置来更新索引即可。将名称更改为delimiterIndex
仅仅是因为给管道打连字符会打扰我:P
请特别注意,在执行子字符串时,我们必须比IndexOf
提供的索引更远,以确保已从结果字符串中切出|
。当我们提供子字符串的长度时,我们必须考虑这个额外的1个字符,因为这会减少结果字符串的总长度。
string s = "698301 | 48380.80 | sam | aass@gmail.com | 5675767 | 3 | 40602.80 | 7778";
string a,b,c,d,e,f,g,h;
int delimiterIndex = s.IndexOf('|');
a = s.Substring(0,delimiterIndex);
s = s.Substring(delimiterIndex + 1,s.Length - delimiterIndex - 1);
delimiterIndex = s.IndexOf('|');
b = s.Substring(0,s.Length - delimiterIndex - 1);
delimiterIndex = s.IndexOf('|');
c = s.Substring(0,s.Length - delimiterIndex - 1);
delimiterIndex = s.IndexOf('|');
d = s.Substring(0,s.Length - delimiterIndex - 1);
delimiterIndex = s.IndexOf('|');
e = s.Substring(0,s.Length - delimiterIndex - 1);
delimiterIndex = s.IndexOf('|');
f = s.Substring(0,s.Length - delimiterIndex - 1);
delimiterIndex = s.IndexOf('|');
g = s.Substring(0,s.Length - delimiterIndex - 1);
h = s;
正如Chris Dunaway所建议的那样,可以使用IndexOf的重载对其进行进一步细化以删除源字符串的子字符串,该重载采用起始索引。看起来像下面的
string s = "698301 | 48380.80 | sam | aass@gmail.com | 5675767 | 3 | 40602.80 | 7778";
string a,h;
int lastIndex = 0;
int delimiterIndex = s.IndexOf('|',0);
a = s.Substring(lastIndex,delimiterIndex);
lastIndex = delimiterIndex;
delimiterIndex = s.IndexOf('|',delimiterIndex+1);
b = s.Substring(lastIndex + 1,delimiterIndex - lastIndex - 1);
lastIndex = delimiterIndex;
delimiterIndex = s.IndexOf('|',delimiterIndex+1);
c = s.Substring(lastIndex + 1,delimiterIndex+1);
d = s.Substring(lastIndex + 1,delimiterIndex+1);
e = s.Substring(lastIndex + 1,delimiterIndex+1);
f = s.Substring(lastIndex + 1,delimiterIndex+1);
g = s.Substring(lastIndex + 1,delimiterIndex - lastIndex - 1);
lastIndex = delimiterIndex;
h = s.Substring(lastIndex + 1);
本文链接:https://www.f2er.com/3121587.html