从 byte[] 转换后的 C# 奇怪字符串行为。 (Exif 数据)
C# Wierd String behavior after converting it from a byte[]. (Exif Data)
所以我正在开发一个帮助您排序和查看图像的小程序。
我目前正在尝试加载 Exif 数据并显示它。
转换和加载有效,但问题是当我尝试连接相机和制造商名称时,标签只显示第一个字符串。
编辑:
感谢@Kevin Gosse
找到了问题
事实证明,String
包含一个空字符 [=11=]
,这导致标签在没有后续文本的情况下呈现。我通过删除字符串的最后一个字符来修复它。 (@KevinGosse 在评论中建议的解决方案。)
确保字符串(尤其是第一个)不以换行符结尾。最安全的方法是使用 TrimEnd()
。
将这些显式提取到单独的变量中,检查值的有效性,然后构建其余逻辑也很有用:
// data gathering & pre-processing
string makerName = data.MakerName.TrimEnd('\r', '\n');
string camModel = data.CameraModel.TrimEnd('\r', '\n');
//build UI text
string labelText = makerName + " - " + camModel;
//update UI
theLabel.Text = labelText;
所以我正在开发一个帮助您排序和查看图像的小程序。 我目前正在尝试加载 Exif 数据并显示它。 转换和加载有效,但问题是当我尝试连接相机和制造商名称时,标签只显示第一个字符串。
编辑: 感谢@Kevin Gosse
找到了问题事实证明,String
包含一个空字符 [=11=]
,这导致标签在没有后续文本的情况下呈现。我通过删除字符串的最后一个字符来修复它。 (@KevinGosse 在评论中建议的解决方案。)
确保字符串(尤其是第一个)不以换行符结尾。最安全的方法是使用 TrimEnd()
。
将这些显式提取到单独的变量中,检查值的有效性,然后构建其余逻辑也很有用:
// data gathering & pre-processing
string makerName = data.MakerName.TrimEnd('\r', '\n');
string camModel = data.CameraModel.TrimEnd('\r', '\n');
//build UI text
string labelText = makerName + " - " + camModel;
//update UI
theLabel.Text = labelText;