Форматированная строка StringReader

Я следил за этим руководством по Wordpress, которое прекрасно работает. Я использовал список, и когда я пытаюсь отформатировать строку, она не распознает \t (но распознает \n). Он также не распознает String.Format и т. д.

Могу ли я отформатировать строку с помощью табуляции или чего-то подобного?

Ваше здоровье

ИЗМЕНИТЬ

for( i = 0; i < lstView.Items.Count;i++) 
{ 
    name = lstView.Items[i].Text; 
    state = lstView.Items[i].SubItems[1].Text; 
    country = lstView.Items[i].SubItems[2].Text; 
    line += name + "\t" + state + "\t" + country + "\n"; 
}  
StringReader reader = new StringReader(line); 

Когда строка используется для печати, строка объединяется, поэтому \t не работает. Однако \n для новой строки работает. Кто-нибудь знает, как я могу отформатировать строку без использования пробелов.

The result is like this

NameStateCountry

LongernameStateCountry

другоеИмяДругоеШтатДругаяСтрана

Там, где я хотел бы, чтобы они выстроились (например, в таблице) с именем одного столбца, укажите другой столбец и страну, а затем третий

Любые предложения с благодарностью


person flo    schedule 11.05.2011    source источник
comment
Не могли бы вы предоставить небольшой пример кода? Или немного уточнить вопрос?   -  person Jakob Möllås    schedule 11.05.2011
comment
Откуда вы знаете, что он не распознает вкладки? В некоторых контекстах вкладки не печатаются. Другими словами, строка a\tb отображается как ab, а не как b.   -  person phoog    schedule 11.05.2011
comment
ХОТИТЕ ли вы удалить \t и \n из текста, который приходит из Listveiw.. Пожалуйста, уточните, что вы хотите, особенно что вы подразумеваете под форматированием строки и где вы хотите, чтобы она была отформатирована и как.   -  person Raghav    schedule 11.05.2011
comment
как мне отформатировать его как код в этом поле для комментариев?   -  person flo    schedule 11.05.2011
comment
Вместо этого поместите это в ответ. Ссылка на справку справа от поля редактирования текста (при редактировании комментария) описывает мини-разметку, используемую в комментариях.   -  person Jakob Möllås    schedule 11.05.2011


Ответы (1)


Что ж, немного странно, что вкладки теряются, но, с другой стороны, вкладки, вероятно, будут проблематичными, если отдельные элементы строки (имя, состояние и т. д.) различаются по длине.
Вместо этого вы можете использовать string.Format() и используйте фиксированную ширину столбца.
Чтобы получить хороший визуальный вывод, это будет включать шаг синтаксического анализа для определения правильной ширины столбца.
Когда это будет сделано, используйте что-то подобное, чтобы использовать пробелы вместо табуляции.

string line = string.Format("{0,-20}{1,-20}{2,-20}", "name", "state", "country");

EDIT: увидел, что вы не хотите использовать пробелы.
В этом случае вам, вероятно, придется обрабатывать это в самом алгоритме печати. Вы по-прежнему можете разделять элементы с помощью табуляции, а затем для каждой строки разбивать их на табуляции, создавая массив элементов (столбцов) в каждой строке.
Для каждого элемента напечатайте его, используя Graphics.DrawString() с подходящим смещением по оси X.

См. документацию для Graphics.DrawString. .

person Jakob Möllås    schedule 15.05.2011
comment
Спасибо. Я пробовал это изначально, но я, очевидно, сделал что-то не так, но теперь отлично работает. - person flo; 16.05.2011