从字符串中查找并解析值

时间:2014-04-10 13:49:25

标签: c#

我有一个字符串,我试图解析来自的值。它的格式为"43,56,12,ddl=345"

我正在尝试将ddl值(345)存储在单独的变量中,然后存储在列表中的其他数字中。

List<int> nums = new List<int>();
int? ddlValue;

我该怎么做?

4 个答案:

答案 0 :(得分:5)

您可以尝试解析整数字符串,然后对要存储的任何其他值进行特殊检查。

var sNums = "43,56,12,ddl=345";

List<int> nums = new List<int>();
int? ddlValue;

foreach (var t in sNums.Split(',')) {
    int u;
    if (int.TryParse(t, out u)) {
        nums.Add(u);
    } else {
        ddlValue = t.Split("=")[1];
    }
}

答案 1 :(得分:1)

你可以这样做:

var sNums = "43,56,12,ddl=345".Split(',');

var ddl = int.Parse(sNums.First(s => s.Contains("ddl")).Replace("ddl=", ""));
var numbers = sNums.Where(s => !s.Contains("ddl")).Select(int.Parse);

*注意 - 在单循环中执行此操作效率稍低 - 但更易读的IMO。

答案 2 :(得分:0)

您可以这样做:

List<int> nums=new List<int>();
int intVariable = 0;
string s = "43,56,12,ddl=345";
string[] split=s.Split(',');
Regex regex = new Regex(@"^\d+$");
foreach(var element in split)
  if(regex.IsMatch(element))
      nums.Add(Convert.ToInt32(element));
  else
  {
       intVariable = element.Split("=")[1];
  }

答案 3 :(得分:-1)

我的意思是最简单的方法是拆分和替换。

  string values = "43,56,12,ddl=345";

        string[] values1 = values.Split(',');

        foreach (var x in values1)
        {
            list.Add(x);
        } 

  string myvalue = values.Split(',')[3];
  myvalue = myvalue.Replace("ddl=","");

这假设您每次都会获得相同的格式。也许更多信息?

编辑 -

如果你不总是有3个数字,那么ddl = then string myvalue = values.Split(',')[3];不管用。有几个简单的方法,如

    string myvalue = values.Split(',')[values1.Count() - 1]