轻松解析字符串

当我需要通过用逗号连接它们来对某些值进行字符串化时,我会这样做,例如:

string.Format("{0},{1},{3}", item.Id, item.Name, item.Count); 

例如,有"12,Apple,20"
然后我想做相反的操作,从给定的字符串中获取值。 就像是:

 parseFromString(str, out item.Id, out item.Name, out item.Count); 

我知道,在C中是可能的。但我不知道C#中的这种function。

是的,这很容易。 您只需使用String.Split方法在每个逗号上拆分字符串。

例如:

 string myString = "12,Apple,20"; string[] subStrings = myString.Split(','); foreach (string str in subStrings) { Console.WriteLine(str); } 

可能的实现将使用String.Split或Regex.Match

例。

 public void parseFromString(string input, out int id, out string name, out int count) { var split = input.Split(','); if(split.length == 3) // perhaps more validation here { id = int.Parse(split[0]); name = split[1]; count = int.Parse(split[2]); } } 

要么

 public void parseFromString(string input, out int id, out string name, out int count) { var r = new Regex(@"(\d+),(\w+),(\d+)", RegexOptions.IgnoreCase); var match = r.Match(input); if(match.Success) { id = int.Parse(match.Groups[1].Value); name = match.Groups[2].Value; count = int.Parse(match.Groups[3].Value); } } 

编辑:最后,SO在C#中的scanf实现上有一堆线程
寻找C#等效的scanf
我如何在c#中执行sscanf

如果你可以假设字符串格式,特别是那个item.Name不包含a ,

 void parseFromString(string str, out int id, out string name, out int count) { string[] parts = str.split(','); id = int.Parse(parts[0]); name = parts[1]; count = int.Parse(parts[2]); } 

这将只是做你想要的,但我建议你添加一些错误检查。 最好还是考虑序列化/反序列化为XML或JSON。

使用分割function

 var result = "12,Apple,20".Split(',');