转换为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();
  }

转换为c#时,输入字符串格式不正确

实际上在那个字符串中有一个特殊的字符,它没有显示在调试器中,但是如果你在转换为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));

总是检查那些即使通过调试器也能看到的东西!:)