string value = "L3 ABCD L4 3501% L5 20%,L3 EFGH L4 17260% L5 20%,L3 IJKL L4 2051% L5 20%,L3 MNOP L4 2621% L5 20%,L3 QRST L4 45325% L5 20% L2 40%";
我正在尝试
string[] splitvalues = value.Split();
然后使用开关找出它是L2,L3,L4,L5
但L5的价值是“20%,L3”
代码是:
string[] splitvalues = value.Split();
for (int i = 0; i < splitvalues .Length; i = i + 2)
{
String id = splitvalues [i];
switch (id)
{
case "L3":
Name = splitvalues [i + 1];
break;
case "L4":
Number1.FromString(splitvalues [i + 1]);
break;
case "L5":
Number2.FromString(splitvalues [i + 1]);
break;
case "L2":
Number3.FromString(splitvalues [i + 1]);
break;
}
}
答案 0 :(得分:2)
试试这个:
string[] arr = value.Replace("," , " ").Split(' ');
答案 1 :(得分:2)
没有参数的Split()默认情况下按空格字符拆分字符串。如果要将字符串拆分为其他字符,则应使用接受分隔符字符列表的重载:
string[] splitvalues = value.Split(' ', ',');
答案 2 :(得分:0)
没有任何参数的Split()仅在Spaces上分割,因此splitValues [5]为'20%L3'是正确的。
你能澄清一下你的问题来描述你想要达到的目标吗?
答案 3 :(得分:0)
你在空间上分裂,但你在字符串中也有一些逗号:
“L3 ABCD L4 3501%L5 20%,L3 EFGH L4 17260%L5 20%,L3 IJKL L4 2051%L5 20%,L3 < / strong> MNOP L4 2621%L5 20%,L3 QRST L4 45325%L5 20%L2 40%“
删除逗号,你应该好好去。
如果你不能修改字符串,那么就拆分空格和逗号。
答案 4 :(得分:0)
试试这个
在代码
中添加此内容using System.Collections.Generic;;
程序
string value = "L3 ABCD L4 3501% L5 20%,L3 EFGH L4 17260% L5 20%,L3 IJKL L4 2051% L5 20%,L3 MNOP L4 2621% L5 20%,L3 QRST L4 45325% L5 20% L2 40%";
string[] splitvalues = value.Split(',');
List<string> outP = new List<string>();
foreach (string s in splitvalues)
{
string[] innerSplit = s.Split();
//use this 'innerSplit' variable for furture coding...
outP.AddRange(innerSplit);
}
答案 5 :(得分:0)
您可以使用正则表达式L(\d+)\s([^,\s]+)
,例如:
var result =
Regex.Matches(input, @"L(\d+)\s([^,\s]+)").OfType<Match>()
.ToDictionary(k => int.Parse(k.Groups[1].Value), v => v.Groups[2].Value);
答案 6 :(得分:0)
看起来您的数据应该被拆分两次,','似乎是您的记录分隔符,并且''似乎是您的字段分隔符;
要使用此数据,您可能希望使用拆分行,然后在行
上使用正则表达式Regex fieldRegex=new Regex("(?<key>.*?)\s(?<value>.*?)");
string value = "L3 ABCD L4 3501% L5 20%,L3 EFGH L4 17260% L5 20%,L3 IJKL L4 2051% L5 20%,L3 MNOP L4 2621% L5 20%,L3 QRST L4 45325% L5 20% L2 40%";
string[] lines= value.Split(',');
foreach (var line in lines) {
matches=fieldRegex.Matches(line);
foreach (var match in matches.OfType(Match)) {
string key=match.Groups["key"].Value;
string value=match.Groups["value"].Value;
switch (key) {
case "L3":
Name = value;
break;
case "L4":
Number1.FromString(value);
break;
case "L5":
Number2.FromString(value);
break;
case "L2":
Number3.FromString(value);
break;
}
}
}