转换为c#时,输入字符串格式不正确
本文关键字:字符串 格式 不正确 输入 转换 | 更新日期: 2023-09-27 18:04:32
我有一个问题,我真的不明白!我试着得到图像的维数然后把它转换成int型。我得到了大小(Width_X_Height)并将其分成部分(高度和宽度),但一旦我试图将它们转换为int,我就会得到"输入字符串格式不正确"我试过"皈依"。ToInt32'和'int '。这两个我都收到了上面的错误。任何帮助都非常感谢
string[] filenameSplit = fileInDirectory.Split('''');
string filename = filenameSplit[filenameSplit.Length - 1];
Shell Sh = new Shell();
FolderItem2 FI = (FolderItem2)(Sh.NameSpace(origPath).Items().Item(filename));
string Width_X_Height = (string)(FI.ExtendedProperty("Dimensions"));
var width = "0";
var height = "0";
if (!string.IsNullOrEmpty(Width_X_Height))
{
string[] widthHeightSplit = Width_X_Height.Split('x');
width = widthHeightSplit[0].Trim();
height = widthHeightSplit[1].Trim();
}
实际上在那个字符串中有一个特殊的字符,它没有显示在调试器中,但是如果你在转换为int之前放一个断点,并在直接窗口中尝试width.ToCharArray()
,你会看到一个字符数组,在宽度的开始和高度的结束处有一个额外的字符。因此,解决方案是删除第一个或最后一个字符(不可见)然后转换或使用此方法从给定字符串
private static string NumberFromString(string input)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < input.Length; i++)
{
if (Char.IsDigit(input[i]))
sb.Append(input[i]);
}
return sb.ToString();
}
你可以这样使用
int x = Convert.ToInt32(NumberFromString(width));
int y = Convert.ToInt32(NumberFromString(height));
总是检查那些即使通过调试器也能看到的东西!:)