2015-11-19 49 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

你不客氣。 –

相關問題