2009-04-07 4 views
2

Мне интересно, возможно ли для .NET String.Format() разделить целое на две подстроки. Например, у меня есть номер 3234, и я хочу отформатировать его как 32X34. У моего целого всегда будет 4 или 6 цифр. Возможно ли использование String.Format()? Если да, то какая строка формата будет работать?String.Format() split integer value

P.S. Я знаю, что есть другие способы сделать это, но мне особенно интересно узнать, может ли String.Format() справиться с этим.

+0

@James - Как вы хотите разделить 6-значное число? Вы явно не указали. – JeffH

ответ

11

Вы можете указать свой собственный формат при вызове String.Format

String.Format("{0:00x00}", 2398) // = "23x93" 
+0

+1 Позвольте мне дать этот снимок. – James

+0

Работает как шарм для четырехзначных чисел. Я, вероятно, в конечном итоге воспользуюсь вариантом решения Джеффа для 4-х и 6-значного состояния, но вы получите вопросы о том, чтобы придумать сложную часть. – James

+0

Почему я никогда не пробовал это раньше ... Я делал подстроку() Спасибо! :) –

-1

Нет, это невозможно.

На самом деле, кажется, что ваши целые числа не являются целыми числами. Возможно, они должны храниться в классе со своим собственным методом ToString(), который будет форматировать их таким образом.

+0

Gah, по крайней мере, попробуйте один раз перед отправкой. – Samuel

+0

Попробуй что? Я сделал переопределение ToString, и он работает. Я никогда не делал такую ​​форматированную строку, как показано ниже, и никогда не видел ее. –

4

Джеймс, я не уверен, что вы полностью указали проблему.

Если ваша цель - поставить «x» в центр строки, Samuel's answer не будет работать для 6-значных чисел. String.Format("{0:00x00}", 239851) возвращает "2398x51" вместо "239x851"

Вместо этого попробуйте:

String.Format(val<10000 ? "{0:00x00}" : "{0:000x000}", val) 

В любом случае метод называется Composite Formatting.

(Я предполагаю, что цифры будут между 1000 и 999999 включительно. Даже тогда цифры от 1000 до 1009 включительно будут сообщать номер после «х» с ненужным ведущим «0». действителен для значений от 1010 до 999999 включительно.)

+0

Предполагается, что он хочет 123x456 вместо 1234x56. – Samuel

+0

И вот почему я предложил класс. Он может хранить данные в целочисленном виде, но не имеет семантики целого числа. –

+0

+1 Я буду использовать вариацию вашего решения для 4-х и 6-значного состояния. – James