2014-02-19 41 views
0

我有一個字符串數組包含這樣值的字符串數組值區分..如何在C#

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[] { ' ' }); 

現在我的問題是我可以寫什麼條件來隔離這兩個字符串數組值?

+0

你的意思是在兩個值之間進行隔離寫出帖子的開頭? –

+0

首先定義什麼是唯一標識兩種類型的值。 – Polyfun

+0

@KB我必須處理1 03/MAR/2013 06:41:06 9448485859 00:15 0.40 **這不同和SNO日期時間編號持續時間/體積金額不同,當這些都存在於相同的字符串數組稱爲拆分 – Adi

回答

1
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]); 
} 
0

你只關注與得到的數據值,

1 03/MAR/2013 06:41:06 9448485859 00:15 0.40

如果數據格式一致這樣,我可能會用正則表達式接近它,和得到相匹配的一切,繼續與您

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

,所以你知道你會不會有涉及您的任何頭文件數據。

編輯:這應該適合你。

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 
} 
+0

是的先生我只想要這些值1 03/MAR/2013 06:41:06 9448485859 00:15 0.40 **和忽略字符值。這就是爲什麼我問什麼條件我可以寫在兩個之間的diffrentiate? – Adi

0

1 03/MAR/2013 6點41分06秒9448485859 00:15 0.40 **

在你的情況中的第一項(S.No)是整數。通過使用這個,我們可以像下面那樣從字符串數組中獲得有效行。

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)); 

在上面的例子中,我只是檢查了序列號。如果您需要一個完美的結果,您可以檢查上述Linq查詢中的日期,電話號碼,持續時間,金額。

0

這應有助於:

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

這是假設你只希望它以數字開頭的那些行。