如何在C#中拆分这种字符串

时间:2013-03-06 14:57:41

标签: c# .net split

好吧,我有一个包含此信息的文件:

  

04/12/2012 06/12/2012 XX123410116000020000118 XEPLATINOXE XX XXXEXX XXXX PLATINOX XX $ 131.07

这是一个完整的行,在文件中我有10行更像这样,我想在C#中使用split来获得下一个结果:

 Line[0]= 04/12/2012
 Line[1]= 06/12/2012
 Line[2]= XX123410116000020000118
 Line[3]= XEPLATINOXE XX XXXEXX XXXX PLATINOX  XX
 Line[4]= $     131.07

我尝试这样做但不起作用,请帮助我。

感谢。

保佑!

4 个答案:

答案 0 :(得分:1)

我确信有人会推荐一款花哨的RegEx,但是如果没有这样的话,可以采用以下方式:

string source = "04/12/2012 06/12/2012 XX123410116000020000118 XEPLATINOXE XX XXXEXX XXXX PLATINOX XX $ 131.07";
string[] split1 = source.Split('$');
string[] split2 = split1[0].Split(new char[] {' '},4);  // limit to 4 results
string lines = split2.Concat(new [] {split1[1]});

答案 1 :(得分:0)

04/12/2012 06/12/2012 XX123410116000020000118 XEPLATINOXE XX XXXEXX XXXX PLATINOX XX $ 131.07

可以通过使用分组括号使用正则表达式进行解析,但为了获得真正可靠的结果,我们需要知道记录的哪些部分是一致的。

我将假设第三项永远不会有空格,第五项始终以$

开头
using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        // First we see the input string.
        string input = "04/12/2012 06/12/2012 XX123410116000020000118 XEPLATINOXE XX XXXEXX XXXX PLATINOX XX $ 131.07";

        // Here we call Regex.Match.
        Match match = Regex.Match(input, @"^(\d\d\/\d\d\/\d{4}) (\d\d\/\d\d\/\d{4}) (\S+) ([^\$]+) (\$.+)$");

        // Here we check the Match instance.
        if (match.Success)
        {
            // Your results are stored in  match.Groups[1].Value, match.Groups[2].Value, match.Groups[3].Value, 
            //      match.Groups[4].Value, and match.Groups[5].Value, so now you can do whatever with them
            Console.WriteLine(match.Groups[5].ToString());
            Console.ReadKey();
        }
    }
}

一些有用的链接:

答案 2 :(得分:0)

嗯,有人发布这个答案,它对我有用!

String[] array1 = file_[count + 19].Split(new[] { " " }, 4,StringSplitOptions.RemoveEmptyEntries);

我不需要拆分最后一个数组,在这种情况下:

array[3]    

因为这对我的格式很好:

  

XEPLATINOXE XX XXXEXX XXXX PLATINOX XX $ 131.07

非常感谢!

保佑!

答案 3 :(得分:-1)

String.Substring Method (Int32, Int32)

那已经存在了。

使用示例:

String myString = "abc";
bool test1 = myString.Substring(2, 1).Equals("c"); // This is true.
Console.WriteLine(test1);
bool test2 = String.IsNullOrEmpty(myString.Substring(3, 0)); // This is true.
Console.WriteLine(test2);
try {
   string str3 = myString.Substring(3, 1); // This throws ArgumentOutOfRangeException.
   Console.WriteLine(str3);
}
catch (ArgumentOutOfRangeException e) {
   Console.WriteLine(e.Message);
}