2015-11-19 3 views
0

я использую константу Char объявленную как это в качестве разделителя для разделения и присоединиться струны на:Создание строковой константе, которая содержит один символ нулевой

public const Char DELIMITERCHAR = (char)0; 

Однако, я часто требуется, чтобы бросить символ в строку , например, при использовании замены, как это:

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

Итак, для того, чтобы избежать использования ToString() Я хотел бы иметь строки константа слишком, который не содержит ничего, кроме пустого символа, но я не могу Не узнайте, как его создать ...

Выполнение следующих не кажется правильным, так как я хочу строку, которая содержит нуль, а не один, что является нуль:

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

Добро пожаловать. –

Смежные вопросы