0

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

2012 年 4 月 12 日 2012 年 6 月 12 日 XX123410116000020000118 XEPLATINOXE XX XXXXEXX 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

4 回答 4

1

我相信有人会建议一个花哨的正则表达式,但这里有一种没有它的方法:

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]});
于 2013-03-06T15:02:33.443 回答
0

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

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

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

array[3]    

因为它对我来说很好这种格式:

XEPLATINOXE XX XXXXEXX XXXX PLATINOX XX $131.07

多谢!

保佑!

于 2013-03-06T16:37:14.387 回答
0

2012 年 4 月 12 日 2012 年 6 月 12 日 XX123410116000020000118 XEPLATINOXE XX XXXXEXX 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();
        }
    }
}

一些有用的链接:

于 2013-03-06T15:31:57.790 回答
-1

String.Substring 方法 (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);
}
于 2013-03-06T15:01:19.180 回答