C# 如何在c中区分字符串数组中的值#

C# 如何在c中区分字符串数组中的值#,c#,regex,arrays,string,substring,C#,Regex,Arrays,String,Substring,我有一个字符串数组,其中包含如下值 1 03/MAR/2013 06:41:06 9448485859 00:15 0.40 ** 现在,有时我的字符串数组包含如下值 SNo Date Time Number Duration/Volume Amount 这是我的代码,它将名为行的字符串拆分为字符串数组拆分 string[] split = line.Split(new Char[] { ' ' }); 现在我的问题是,我可以编写什么条件来分隔这两个字符串数组值?您是否只关心获取数据值 i

我有一个字符串数组,其中包含如下值

1 03/MAR/2013 06:41:06 9448485859 00:15 0.40 **
现在,有时我的字符串数组包含如下值

SNo Date Time Number Duration/Volume Amount
这是我的代码,它将名为行的字符串拆分为字符串数组拆分

string[] split = line.Split(new Char[] { ' ' });

现在我的问题是,我可以编写什么条件来分隔这两个字符串数组值?

您是否只关心获取数据值

i、 e.
2013年3月03日06:41:06 94485859 00:15 0.40

如果数据以这种方式格式化,我可能会使用正则表达式来处理它,所有匹配的内容都将继续使用

string[]split=line.split(新字符[]{''})

因此,您知道不会涉及任何标题数据

编辑:这应该适合您

using System.Text.RegularExpressions;


Regex rgx = new Regex("\d+\s+\d{1,2}/(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)/[12]\d{3}\s+\d{2}:\d{2}:\d{2}\s+\d+\s+\d{2}:\d{2}\s+\d+.\d+\s+\*\*");
if (rgx.IsMatch(line))
{
    string[] split = line.Split(new Char[] { ' ' });
    //process your data, etc
}
2013年3月1日06:41:06 94485859 00:15 0.40**

在您的情况下,第一项(序号)是整数。通过使用它,我们可以从字符串数组中获得如下所示的有效行

var lines = new[] { "1 03/MAR/2013 06:41:06 9448485859 00:15 0.40 **",
                    "SNo Date Time Number Duration/Volume Amount" };
int serialNumber;
IEnumerable<string> validLines = lines.Where(s => !string.IsNullOrEmpty(s) && 
                                  int.TryParse(s.Split(' ')[0], out serialNumber));
var lines=new[]{“1 03/MAR/2013 06:41:06 94485859 00:15 0.40**”,
“SNo日期时间编号持续时间/数量”};
整数序列号;
IEnumerable validLines=行。其中(s=>!string.IsNullOrEmpty&&
int.TryParse(s.Split(“”)[0],out serialNumber));
在上面的例子中,我只是检查了序列号。如果您需要一个完美的结果,您可以在上面的Linq查询中检查日期、电话号码、持续时间、金额。

Dictionary\u dic=new Dictionary();
Dictionary<string, string> _dic = new Dictionary<string, string>();
string line = "1 03/MAR/2013 06:41:06 9448485859 00:15 0.40 **";
string line1 = "SNo Date Time Number Duration/Volume Amount";
line.Replace('*', ' ');
string[] split1 = line.Split(new Char[] { ' ' });
string[] split2 = line1.Split(new Char[] { ' ' });

for (int _i = 0; _i < line.Length; _i++)
{
    _dic.Add(split1[_i], split2[_i]);
}
字符串行=“1 03/MAR/2013 06:41:06 94485859 00:15 0.40**”; 字符串line1=“SNo日期时间编号持续时间/数量金额”; 行。替换(“*”、“”); 字符串[]split1=line.Split(新字符[]{''}); 字符串[]split2=line1.Split(新字符[]{''}); 对于(int_i=0;_i
这将有助于:

string[] split = line.Split(new Char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
                     .Where(x =>char.IsDigit(x[0])).ToArray();

这假设您只需要以数字开头的行。

您所说的在文章开头写入的两个值之间分隔的意思是什么?首先定义唯一标识这两种类型值的内容。@K.B我必须处理2013年3月1日06:41:06 94485859 00:15 0.40**这是不同的,并且没有日期时间编号持续时间/数量当这两行都出现在称为split的同一字符串数组中时,数量会有所不同如果您确定这些行将以数字开头,您可以在
中检查,其中
filter.split[0]。Any(c=>Char.IsDigit(c))检查第一个字符串是否包含任何数字是的,先生,我只需要这些值1 03/MAR/2013 06:41:06 9448485859 00:15 0.40**并忽略字符值。这就是为什么我要问我可以写入什么条件来区分这两个值?