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

时间:2013-08-11 08:43:03

标签: c# string

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

  

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

我想在没有短划线的情况下只阅读“9AE4F468”,并将其显示在消息框中。

我尝试使用Substring(45,54),但我一直收到编译错误,因为程序没有读取它。

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

3 个答案:

答案 0 :(得分:4)

不是处于必须使用子字符串来获取磁盘卷序列号的位置,而可以使用直接为您提供正确字符串的方法。

要使用以下代码,您必须向程序集添加对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);

答案 1 :(得分:2)

假设你只想要最后一个字:

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

答案 2 :(得分:0)

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

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

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