我运行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
示例程序