2017-05-02 24 views
0

我有包含兩組數據的字符串,分別稱它們爲1和2。在數據串的每個是由符號@&等分離:如何從一個字符串中提取數據到兩個數組

@ DATA1 & DATA2 @ DATA1 & DATA2 @ ....

我想提取它成爲一個陣列,例如x[] = all the data1y[] = data2

我試過方法strtok但是字符串的處理後的方法給了我一個倒置的字符串是這樣的:

「ABCD」成爲 d c b a

一個數組,因爲我需要它拆分成的順序兩個數組在它被發現了不適合我的情況下工作。

+1

您應該發佈您的代碼以及您的示例應該反映您顯示的字符串,@ data1&data2 @ data1&data2 @不等於您的示例abcd - > d c b a。很難說這是你真正想要完成的。 – Sorceri

+1

你應該發佈你寫的代碼來幫助我們回答你的問題。 – RH6

回答

1

我不知道什麼存儲在你的data1,data2等,但似乎你需要使用你的字符串的方法Split()

string input = "@data1&[email protected]&[email protected]"; 
string[] splitInput = input.Split({'@', '&'}); 

splitInput的每個元素將包含您的一個數據塊。

0

假設你的數據格式爲不變

string input = "@data1&[email protected]&data4"; 

var keyValues = input.Split(new[] { '@'}, StringSplitOptions.RemoveEmptyEntries) // split to ["data1&data2", "data3&data4"] 
       .Select(i => i.Split('&')) // split to [ ["data1", "data2"], ["data3" , "data4"] ] 
       .Select(k => new KeyValuePair<string, string>(k[0], k[1])); 

var x = keyValues.Select(s => s.Key); // x array 
var y = keyValues.Select(s => s.Value); // y array 
0

正則表達式允許一個基於「REG-EX」語言中的模式來分析和提取。


例如,要創建模式,請按照下列步驟操作。

  1. 我們知道有一個文字字符@和一個文字字符&。所以初始模式包含@ &
  2. 然後我們需要匹配並捕獲將這些項目放在X和Y之後的文本。這是通過指定匹配捕獲集合()在正則表達式中完成的。所以現在我們的模式看起來像這樣@()&()
  3. 匹配任何文字可以這樣說\w+。其中說我們正在尋找一個字型字符(a-z和0-9),可以表示爲\w。由於我們正在查找1個或多個字符,因此我們將+添加到\w,使其生成\w+。現在我們的模式看起來像這樣@(\w+)&(\w+)
  4. 對於這種模式,我們預計將從正則表達式解析器返回兩組數據,它將返回兩個Match實例。
  5. 現在我們從匹配集中提取數據。
  6. 通過兩組數據,一個X和Y,我們將創建單獨的數組。

string data = "@data1&[email protected]&something2"; 

string pattern = @"@(\w+)&(\w+)"; 
// The C# literal character `@` must precede the string holding regex pattern. 

var matches = Regex.Matches(data, pattern) 
        .OfType<Match>() 
        .Select(mt => new { X = mt.Groups[1].Value, Y = mt.Groups[2].Value }) 
        .ToList(); 

// See what the data looks like in `matches` 

var XArray = matches.Select(item => item.X).ToList(); 

// See what the data looks like in "XArray" 

var YArray = matches.Select(item => item.Y).ToList(); 

// See what the data looks like in "YArray" 

enter image description here


要了解更多信息,請參見

儘管該文檔適用於Visual Studio 2010,但它仍然可以使用。

+0

對不起,我試圖理解你說什麼,但我是虛假的。你能輕鬆嗎?非常感謝 –

+0

@PhamCongTheAnhTìmhiểucácbiểuthứcthôngthường。 Sauđóđọctácphẩmcủatôimộtlầnnữa。 (學習正則表達式,然後再讀我的着作。) – OmegaMan

相關問題