簡體   English   中英

從字符C#之間的字符串讀取多於兩位數的變量

[英]Read variable with more than two digits from string between chars c#

我在字符串列表中有多行,並且每一行都有這種結構,只是帶有不同的變量

line = "14*x1 + 2*x2 + 3*x3 >= 2";

我希望將值14,2和3保存在另一個List<int>

以下代碼僅在變量只有一位的情況下有效,因此14將僅保存為4

List<double> list = new List<double>()
foreach (var line in functionlist)
{        
    for (int i = 0; i < line.Length; i++)
    {                    
        if (line[i].Equals('*'))
        {             
            list.Add(line[i-1]);
        }
    }
}

我知道問題是line[i-1] ,它僅在需要使用'*'和子字符串之前保存數字。 我只是不知道如何。

你可以試試看

  string line = "14*x1 + 2*x2 + 3*x3 = 2";
  var arr = line.Split('+');
  var result = arr.Select(x => x.Substring(0, x.IndexOf('*')));

這是使用正則表達式的解決方案:

List<double> numbers = new Regex(@"(\d+)\*x").Matches(line)
                         .Cast<Match>()
                         .Select(m => double.Parse(m.Groups[1].Value))
                         .ToList();

編輯:更新以解析數字。

(\\d+)\\*簡單RegEx應該可以解決問題。

var line = "14*x1 + 2*x2 + 3*x3 = 2";

var matches = Regex.Matches(line, @"(\d+)\*");

// [] { 14, 2 , 3 }
var numbers = matches.Select(x => double.Parse(x.Groups[1].Value)).ToArray();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM