好吧,我有一个包含此信息的文件:
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
我尝试这样做但不起作用,请帮助我。
感谢。
保佑!
答案 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);
}