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



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

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

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

一个简单的正则表达式来提取字符串中的数字就可以了。

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

还可以添加System。管理并直接通过

获取尺寸
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()

也看一下这里:

查找并从字符串中提取一个数字

您可以使用Regex获取值

101正则表达式

第一个捕获组

d匹配数字(相当于[0-9])和+在1到无限次之间匹配前一个令牌

因此,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);

输出

值:17856325

示例程序

最新更新