填充的 C# 字符串现在希望它简短

本文关键字:希望 字符串 填充 | 更新日期: 2023-09-27 18:34:20

所以我有两个填充的字符串,但现在我希望它们显示而 Trim() 似乎不想这样做。

String devicename = "".PadRight(100);
String deviceversion = "".PadRight(100);
bool isDeviceReady = capGetDriverDescriptionA(i, ref devicename, 100, ref deviceversion, 100);

稍后我使用如下所示的字符串:

Messagebox.show("Device Name="+devicename.Trim()+" , Device Version="+deviceversion.Trim());

所显示的只是"Device Name=name of the device

思潮?

填充的 C# 字符串现在希望它简短

你为什么要填充字符串?看起来您只是用稍后将被内容替换的空格填充字符串,但从您的问题来看,我不明白为什么这是必要的。只是有什么问题:

String devicename = "";
String deviceversion = "";
bool isDeviceReady = capGetDriverDescriptionA(i, ref devicename, 100, ref deviceversion, 100);

在调用返回以零结尾的字符串的 API 函数时,您可以尝试使用 StringBuilder 而不是 string。你得到的行为可能源于以下事实:API 在字符串末尾写入零值(以终止它),而 .NET 将其视为包含零值的普通字符串。

或者,查看此讨论,该讨论建议使用 [MarshalAs(UnmanagedType.LPWSTR)] 属性注释参数。然后PInovke机制应该自动处理最后的零值。

最后很简单。托马斯·佩特里克走在正确的轨道上。它(字符串)返回的是一个以 null 结尾(也称为以零结尾)的字符串。 然后我只需要从字符串中删除空终止符。

devicename = devicename.trim(''0');