如何从字符串中提取整数值

How to extract integer values from inside a string

我 运行 PowerShell 命令使用 C# 获取总 RAM 容量,它 returns 这个值。 @{TotalPhysicalMemory= 17856325}。我写了一段代码来获取唯一的整数值。这是代码。

string ramSize = "@{TotalPhysicalMemory= 17856325}";
string ramValue = ramSize.Split('=')[1].Split('}')[0].Trim().ToString();

此代码returns整数值。但是我想知道有什么方法可以很容易地得到这个整数值吗?

您可以使用 Regex 来获取值。

Regex 101

First capturing group

\d matches a digit (equivalent to [0-9]) and + matches the previous token between one and unlimited times

因此,match.Groups[1].Value 将从组 (\d+) 中获取值,如上所述。

using System.Text.RegularExpression;

string ramSize = "@{TotalPhysicalMemory= 17856325}";
Regex regex = new Regex(@"^\@{TotalPhysicalMemory= (\d+)}");
var match = regex.Match(str);
var ramValue = match.Groups[1].Value;

Console.WriteLine("Value: " + ramValue);

输出

Value: 17856325

Sample program

提取字符串中数字的简单正则表达式即可。

var ram = new Regex(@"\d+").Match(ramSize).Value;

也可以加上System.Management,直接通过

获取尺寸
            var ram =
            new ManagementObjectSearcher("root\CIMV2",
                    "SELECT TotalPhysicalMemory FROM Win32_ComputerSystem")
                .Get().OfType<ManagementObject>().First()
                .Properties.OfType<PropertyData>().First().Value;

要仅获取字符串中的第一个数字,您可以轻松地执行此操作:

using System.Text.RegularExpressions 
string ramValue = Regex.Match(ramSize, @"\d+").Value;

要获取字符串中的所有数字,您可以使用 Linq:

using System.Linq
string ramValue = ramSize.Where(Char.IsDigit).ToArray()

也可以看这里:

Find and extract a number from a string