[英]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.