日期:2014-05-17  浏览次数:20759 次

截取字符串
比如:
C# code

string str = "06B  103 383 E J        0001";
.....
str = "06B  103 383 E J";//结果



如何截取,得到最后的结果,
(注:字符串长度不定,但是0001前的空格长度大于等于3)

------解决方案--------------------
string str = "06B 103 383 E J 0001";
str = Regex.Replace(str, @"\s{3,}\w+", "");
------解决方案--------------------
06B 103 383 E J这个是固定的不?
------解决方案--------------------
C# code
string _str = "06B  103 383 E J        0001";
                _str = Regex.Match(_str,@"[\s\S]*?(?=\s{3,}[\s\S]*$)").Value;
                //06B  103 383 E J

------解决方案--------------------
用正则是最简单的方式
楼上给的答案就很对···
------解决方案--------------------
Split 三个空格就行,如果前面空格都是小于3的
然后在把[0]的结果 trim一下就行
 
此消息通过 【CSDN论坛 Winform正式版】 回复!有关此工具
------解决方案--------------------
string[] arr=str.Replace(" ","Y").split('Y');//四个空格
return arr[0];
这个arr[0]便是你要的值
------解决方案--------------------
string str = "798 166 2M 20120901";

bool flag = false;

int j = -1;

for (int i = str.Length - 1; i > 0; i--)
{
if (str[i] == ' ')
{
flag = true;
}

if (flag == true && str[i] != ' ')
{
j = i;
break;
}
}

str = str.Substring(0, j + 1);
------解决方案--------------------
注意:0001前的空格长度大于等于3 至少这个可以作为匹配条件,上面都是基于此来判断的,如果说你不能提供固定的匹配位置,只能具体情况具体分析,无法通用.
------解决方案--------------------
最后要被截掉的或者保留的有什么规律吗 
如果空格的数量只有在被截取字段前才会大于等于三个那可以用这个:

string str = "06B 103 383 E J 0001";
int i = str.IndexOf(" ");///三个空格 
string myword = str.Substring(0, i).Trim();
------解决方案--------------------
C# code
string _str = "06B  103 383 E J        0001";
                int count = Regex.Matches(_str, @"(?<=\S|^)\s+(?=\S|$)").Cast<Match>().Max(a => a.Length);//8 得到连续空格的最大长度

------解决方案--------------------
楼主你把尽量多的要截取的字符串贴出来看看?
看了你前面的三条数据 好像要保留的字符串最后都是以大些字母结尾的?

那可以试试这个
C# code

string str = "5611009500DD                    0001";
string myword=str.Substring(0,Test(str)).Trim();

int Test(string str)
 {
    int i = 0;
    int lastletter = 0;
    for (i=0; i < str.Length; i++)
    {
        int j = (int)str[i];//字符ASCII值
        if (j >= 65 && j <= 90)//大写字母
        {
            lastletter = i;//最后一个英文字母
            Test(str.Substring((i+1), str.Length - (i+1)));
        }
    }
    return lastletter+1;
}

------解决方案--------------------
[Quote=引用:]

最后要被截掉的或者保留的有什么规律吗 
如果空格的数量只有在被截取字段前才会大于等于三个那可以用这个:
C# code