2015-11-19 48 views
0

我使用宣布这样的字符常量作为分隔符分裂和加入的字符串:创建一个字符串常量,它包含了一个空字符

public const Char DELIMITERCHAR = (char)0; 

不过,我经常需要为char转换为字符串,例如使用时更换这样的:

someString.Replace(DELIMITERCHAR.ToString(), "someOtherDelimiter-String"); 

因此,为了避免使用的ToString()我想有一个字符串常量也包含比空字符而已,但我不能不知道如何创建它...

执行以下操作看起来不正确的,因为我想其中包含null,不是一个空字符串:

public const String DELIMITERSTR = null; 

这些方法并不能工作,因为它们不是“不变”足够:

public const String DELIMITERSTR = DELIMITERCHAR.ToString(); 
public const String DELIMITERSTR = ((char)0).ToString(); 

结果很明显,编译器错误说:“分配给'DELIMITERSTR'的表达式必须是常量。'

看来这应该傻,简单,但我无法弄清楚如何做到这一点

+0

会string.Empty不工作? – Idiot211

+0

不,不幸的不是。这将给出一个空字符串,而不是一个包含空字符的字符串。 – Culme

回答

4

你可以简单地用\0申报单字符长度的字符串作为唯一的字符:

public const String DELIMITERSTR = "\0"; 

然后,您随时都可以从中提取该字符,如果必要的话:

DELIMITEDSTR[0] 
+0

啊......当然使用逃避反斜线。我知道这很简单...谢谢! :-) – Culme

1

严格把你的问题Yeldar答案是正确的

但是,如果我们多思考一下,我们可能会认为NULL字符在很多情况下可能会导致问题,因为这些字符在某些数据库或应用程序中可能会被拒绝 - 即使它被认为是国际符号数据结束等等。

如果您接受建议,请尝试将另一个符号视为分隔符,如“|”或ASCII-255,或一组符号(如“|:”)。它可以更安全。

+0

感谢您的建议。我们使用空字符是因为它不太可能存在于我们处理的数据中,即它不是用户偶然在文本框中写入的东西。管道“|”在键盘上,所以我们不会使用它。 =)ASCI255可能是一个选项,会考虑它。谢谢! – Culme

+0

你不客气。 –

相关问题