读书人

截取字符串,该如何处理

发布时间: 2012-09-28 00:03:35 作者: rapoo

截取字符串
比如:

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

string str = "06B  103 383 E J        0001";int i = str.IndexOf("   ");//三个空格 string myword = str.Substring(0, i).Trim();
[解决办法]
string[] array =
@"876200Q100 0091
876503D000 00001
876603D010 00001
877110Q000 00001
877120Q000 00001
877210Q000 0001
171 937 579 20120628
171 919 505 001
919 819 934 0001
321 971 228 0001
327 971 333 0001
330 721 555 0001".Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).Select(T => Regex.Replace(T, @"\s{3,}[\s\S]*$", "")).ToArray();

读书人网 >C#

热点推荐