C#使用split来分隔两部分字符串

时间:2017-01-24 22:51:12

标签: c# excel

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

"Calories (kcal) "   

(减去引号)。

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

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

我是C#的新手,需要帮助将“Calories”和“(kcal)”分离到我可以上传到我的在线系统的不同变量。我需要结果是两个字符串:

nutrientLabel = Calories
nutrientUOM = kcal

我已经用Google搜索了这个并找到了如何让它分离并显示到Console.WriteLine但是我需要实际输出2个变量的值。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您可以使用简单的正则表达式:

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

基本上说:

  1. 匹配至少一个号码并将其存储在“卡路里”组中
  2. 匹配空格和左括号
  3. 匹配至少一个号码并将其存储在“kcal”
  4. 组中
  5. 匹配右括号
  6. 然后我们可以使用命名组提取结果:

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

    请注意calorieskcal仍然是字符串,您需要将它们解析为整数(或十进制)