如何将字符串中的数据提取到两个数组中

时间:2017-05-02 17:00:30

标签: c# string extract

我的字符串包含两组数据,分别称为1和2。在数据字符串中,每个都用符号@&分隔,如:

  

@ data1& data2 @ data1& data2 @ ....

我想将其提取为一个数组,例如x[] = all the data1y[] = data2

我尝试了方法strtok,但在处理完字符串后,该方法给了我一个倒置的字符串,如下所示:

" ABCD"成为一个数组     d     c     b     a

这对我的情况不起作用,因为我需要按照查找顺序将其拆分为两个数组。

3 个答案:

答案 0 :(得分:1)

我不知道您的data1data2等确切存储了什么,但您似乎需要使用字符串的Split()方法。

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

splitInput的每个元素都将包含您的一个数据块。

答案 1 :(得分:0)

假设您的数据格式未更改

string input = "@data1&data2@data3&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

答案 2 :(得分:0)

正则表达式允许人们根据“reg-ex”语言中的模式进行解析和提取。

例如,要创建模式,请按照以下步骤操作。

  1. 我知道有一个文字字符@和一个字面字符&。因此初始模式包含@ &
  2. 然后我们需要匹配并捕获这些项目放入X和Y之后的文本。这是通过指定匹配捕获集( )在正则表达式中完成的。所以现在我们的模式看起来像@()&()
  3. 要匹配任何文字,可以说\w+。这说我们正在寻找一个可以表示为\w的单词类型字符(a-Z和0-9)。由于我们要查找一个或多个字符,因此我们向+添加\w,使其成为\w+。现在我们的模式看起来像@(\w+)&(\w+)
  4. 使用该模式,我们期望从正则表达式解析器返回两组数据,这将返回两个Match个实例。
  5. 现在我们从匹配集中提取数据。
  6. 使用两组数据,X和Y,我们将创建单独的数组。
  7. string data = "@data1&something1@data2&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,它仍然可以使用。