日期:2014-05-19  浏览次数:20725 次

Split读取字符串遇到的问题?
有一个字符串s为
    PLCE                   0   0000           720022           995331           263734     -   N.U.   -       15%
我想把“PLCE”“0   0000”“720022”“995331”“263734”“15%”分别读出来放到字符数组中
可是这些关键字之间隔的空格不固定,
没法用   string[]   arr=s.Split( '   ')实现
各位有什么好方法吗?

------解决方案--------------------
1.先找到第一个空格的位置,然后截取第一段。
2.去掉开头所有的空格。
3.重复第一步,重复第二步。
没法子,我也是新人,只能想到这个苯方法。
------解决方案--------------------
try..

string str = "PLCE 0 0000 720022 995331 263734 - N.U. - 15% ";
string[] array = Regex.Split(str, @ "\s+ ");
foreach (string s in array)
{
Console.WriteLine(s);
}
------解决方案--------------------
string buff = @ "PLCE 0 0000 720022 995331 263734 - N.U. - 15% ";
string[] tmp = buff.Split( ' ');

int c = 0;
for (int i = 0; i < tmp.Length; i++)
if (tmp[i] != @ " ")
{
c = c + 1;
}

string[] r = new string[c];
c = 0;
for (int i = 0; i < tmp.Length; i++)
if (tmp[i] != @ " ")
{
r[c] = tmp[i];
c = c + 1;
}
------解决方案--------------------
其实有个方法可以解决,
你首先用 ' '替换成一个$然后用 ' 'split一下,

得到的字符串数组后,再将$替换成 ' ',对数组中的每个Item进行处理,只要是在最前面和最后面为 ' '就删除掉,
在字符串后面的好控制.trim()就ok,
在前面的也很好处理
string str = " Colin ";
for(int i = 0;i <= str.Length-1;i++)
{
if(str.GetString(i) == " ")
{
str = str.substring(i+1,str.Length-i);
}
}
str = str.Trim();
这样就得到了你想要的字符串数组了。