如何只读取字符串的一部分以获得驱动器';的序列号

本文关键字:驱动器 序列号 读取 字符串 一部分 | 更新日期: 2023-09-27 18:27:07

我有一个包含硬盘容量信息的字符串(消息显示在消息框中)

驱动器E中的音量为新音量
卷序列号为9AE4-F468

我只想阅读不带破折号的"9AE4F468",并将其显示在消息框中。

我尝试使用Substring(45,54),但由于程序没有读取它,我一直遇到编译错误

如何在没有破折号的情况下检索特定的子字符串?

如何只读取字符串的一部分以获得驱动器';的序列号

您可以使用一个直接为您提供正确字符串的方法,而不是必须使用子字符串才能获取磁盘卷序列号。

若要使用以下代码,必须将对System.Management的引用添加到程序集中,然后将using System.Management添加到代码文件的顶部。

然后添加此方法:

public string DiskVolumeSerialNumber(char driveLetter)
{
    ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid='"" + driveLetter +":'"");
    disk.Get();
    return disk["VolumeSerialNumber"].ToString();
}

你可以这样称呼它:

string serial = DiskVolumeSerialNumber('C');
Console.WriteLine(serial);

假设您只想要最后一个单词:

string lastWordNoDash = 
    myLongMessage.Substring(myLongMessage.LastIndexOf(" ") + 1).Replace("-", "");

如果您正在寻找最后一个单词,那么影子向导可以解决问题。

如果你有更多,那么你可以做

string lineNeeded = "Volume Serial Number is ";
string lastWordNoDash = 
    myLongMessage.Substring(myLongMessage.IndexOf(lineNeeded) + lineNeeded.length, 9).Replace("-", "");