我有一个包含硬盘卷信息的字符串(消息显示在消息框中)
驱动器E中的音量为新音量
卷序列号为9AE4-F468
我想在没有短划线的情况下只阅读“9AE4F468”,并将其显示在消息框中。
我尝试使用Substring(45,54)
,但我一直收到编译错误,因为程序没有读取它。
如何在没有破折号的情况下检索特定的子字符串?
答案 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("-", "");