首页 > 解决方案 > 处理带有假空值的字符串

问题描述

我有一个具有以下值的字符串: var myString = "17124\0\0\0";

我需要对字符串做两件事:

  1. 获取字符串长度
  2. 将字符串保存到数据库

不幸的是,\0 是 c# 相当于 null。

我尝试了几件事,包括将 \ 替换为 \ myString.Replace(@"\", @"");

我还尝试使用以下代码获取长度: var myLength = myString.Length;

我尝试的一切都将 \0 的每个组合视为空值。

重要提示:我不能从字符串中删除 \0,因为那是字符串的值。

标签: c#

解决方案


我希望你想要一个包含 "\0" 作为文本的字符串,而不是解释为空字符,所以你可以简单地转义转义字符'\',如下所示:

var myString = "17124\\0\\0\\0";

或者您可以使用所谓的逐字字符串文字,如下所示:

var myString = @"17124\0\0\0";

在逐字字符串文字中,转义字符被忽略,您可以保留通常的(更易于阅读的)文本表示。

在上述任何一种情况下,字符串对象都应该像预期的那样工作,例如返回预期值作为字符串的长度。

如果您想摆脱'\'文字中的 ,然后可以调用 Replace 函数,就像您已经尝试过的那样,使用普通或逐字字符串文字。

myString = myString.Replace("\\", "");
myString = myString.Replace(@"\", @"");

但是,如果您想从字符串中完全删除空字符,只需用空文字 ("") 或字符替换空字符 ("\0"),而不是字符串中的反斜杠 ("\") 0(“0”)。

myString = myString.Replace("\0", "");
myString = myString.Replace("\0", "0");

推荐阅读