我的字符串包含两组数据,分别称为1和2。在数据字符串中,每个都用符号@
或&
分隔,如:
@ data1& data2 @ data1& data2 @ ....
我想将其提取为一个数组,例如x[] = all the data1
,y[] = data2
我尝试了方法strtok
,但在处理完字符串后,该方法给了我一个倒置的字符串,如下所示:
" ABCD"成为一个数组
d
c
b
a
这对我的情况不起作用,因为我需要按照查找顺序将其拆分为两个数组。
答案 0 :(得分:1)
我不知道您的data1
,data2
等确切存储了什么,但您似乎需要使用字符串的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”语言中的模式进行解析和提取。
例如,要创建模式,请按照以下步骤操作。
@
和一个字面字符&
。因此初始模式包含@ &
。 ( )
在正则表达式中完成的。所以现在我们的模式看起来像@()&()
。\w+
。这说我们正在寻找一个可以表示为\w
的单词类型字符(a-Z和0-9)。由于我们要查找一个或多个字符,因此我们向+
添加\w
,使其成为\w+
。现在我们的模式看起来像@(\w+)&(\w+)
Match
个实例。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"
了解详情请参阅
即使该文档适用于Visual Studio 2010,它仍然可以使用。