C#使用split来分隔string的两个部分

我在Excel电子表格单元格中有以下文本:

"Calories (kcal) " 

(减去引号)。

我可以将单元格的值存入我的代码中:

 string nutrientLabel = dataRow[0].ToString().Trim(); 

我是C#的新手,需要帮助将“卡路里”和“(千卡)”分隔到我可以上传到我的在线系统的不同variables。 我需要的结果是两个string:

 nutrientLabel = Calories nutrientUOM = kcal 

我已经使用了这个地狱,并发现如何使它分开,并显示到Console.WriteLine但我需要的值实际上2variables。

 foreach (DataRow dataRow in nutrientsdataTable.Rows) { string nutrientLabel = dataRow[0].ToString().Trim(); } char[] paraSeparator = new char[] { '(', ')' }; string[] result; Console.WriteLine("======================================="); Console.WriteLine("Para separated strings :\n"); result = nutrientLabel.Split(paraSeparator, StringSplitOptions.RemoveEmptyEntries); foreach (string str in result) { Console.WriteLine(str); } 

你可以使用这个简单的正则expression式:

 var reg = new Regex(@"(?<calories>\d+)\s\((?<kcal>\d+)\)"); 

基本上说:

  1. 匹配至less一个号码,并将其存储在“卡路里”
  2. 匹配一个空格和一个左括号
  3. 匹配至less一个号码并将其存储在组“千卡”
  4. 匹配右括号

然后我们可以使用命名组来提取结果:

 var sampleInput = "15 (35)"; var match = reg.Match(sampleInput); var calories = match.Groups["calories"]; var kcal = match.Groups["kcal"]; 

请注意, calorieskcal仍然是string在这里,你需要parsing成一个整数(或十进制)

 string [] s = dataRow[0].ToString().Split(' '); nutrientLabel = s[0]; nutrientUOM = s[1].Replace(")","").Replace("(","");