C#分裂功能问题

时间:2011-09-05 10:10:10

标签: c# split

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

7 个答案:

答案 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;  
     }  
  }
}