[英]c# Get only numbers from list of strings which contain numbers and words
我有一個字符串列表 (word--number) ex (burger 5$)。 我只需要從列表中的每個字符串中提取數字並創建新的 int 列表。
有幾種方法可以做到這一點,例如 Regex 和 Linq。
對於短字符串,您可以使用 Linq,例如:
public static void Main()
{
var myStringValue = "burger 5$";
var numbersArray = myStringValue.ToArray().Where(x => char.IsDigit(x));
foreach (var number in numbersArray)
{
Console.WriteLine(numbersArray);
}
}
使用linq
和Regex
:
List<string> list = new List<string>(){"burger 5$","ab12c","12sc34","sd3d5"};
Regex nonDigits = new Regex(@"[^\d]");
List<string> list2 = list.Select(l => nonDigits.Replace(l, "")).ToList();
如果您查看Regex.Split, numbers文章。 你會在里面找到答案。 修改后的代碼可能看起來像
var source = new List<string> {
"burger 5$",
"pizza 6$",
"roll 1$ and salami 2$"
};
var result = new List<int>();
foreach (var input in source)
{
var numbers = Regex.Split(input, @"\D+");
foreach (string number in numbers)
{
if (Int32.TryParse(number, out int value))
{
result.Add(value);
}
}
}
希望能幫助到你。 彼得
您可以查看並使用此代碼解決問題:
List<string> word_number = new List<string>();
List<int> number = new List<int>();
word_number.Add("burger 5$");
word_number.Add("hamburger 6$");
word_number.Add("burger 12$");
foreach (var item in word_number)
{
string[] parts = item.Split(' ');
string[] string_number = parts[1].Split('$');
number.Add(Convert.ToInt16(string_number[0]));
Console.WriteLine(string_number[0]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.