Заполнение строки с помощью метода PadRight - PullRequest
17 голосов
/ 05 сентября 2011

Я пытаюсь добавить пробелы в конец строки в C #:

Trip_Name1.PadRight(20);

Также пробовал:

Trip_Name1.PadRight(20,' ');

Кажется, ничего из этого не работает.Однако я могу дополнить строку любым другим символом.Почему?

Я должен был быть более конкретным, вот полный код:

lnk_showmatch_1.Text = u_trip.Trip_Name1.PadRight(20,' ');

Ответы [ 2 ]

27 голосов
/ 05 сентября 2011

Строка неизменна , их нельзя изменить.PadRight возвращает новый экземпляр дополненной строки, а не изменяет тот, из которого он был вызван.То, что вы хотите, это:

Trip_Name1 = Trip_Name1.PadRight(20,' ');

Существует большой вопрос по этому StackOverflow вопросу о том, почему строки являются неизменяемыми.

EDIT :

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

Вы действительно переназначаете ее, как в примере выше?Если это так, то без подробностей я могу думать только о следующем:

  1. Если вы сохраняете это в базе данных и извлекаете ее, некоторые базы данных с правильными настройками могут «обрезать» дляВы.
  2. У вас есть логика где-то еще, которая обрезает пробелы.Это часто встречается при работе с пользовательским вводом.

РЕДАКТИРОВАТЬ 2 :

Я должен был быть более конкретным

Я собираюсь сделать дикое предположение на основе ваших соглашений об именах, которые вы имеете дело с HTML / ASP.NET.В большинстве случаев в HTML - пробел свернут .Например:

<div><a>Hello           World</a></div>
<div><a>Hello World</a></div>

Оба тега a будут отображаться одинаково, поскольку пробел сокращается.Если вы действительно работаете с HTML - это, вероятно, ваша причина и почему отступ работает для всех остальных символов.Если вы делаете исходный вид отрисованной разметки - содержит ли она дополнительные пробелы?

Если вы хотите сохранить пробелы, попробуйте применить стиль CSS к вашему элементу с именем white-space и установите для него значениеpre.Например:

<a style="white-space:pre">hello     world      </a>

Это приведет к сохранению пробела.Имейте в виду, что использование такого пробела имеет свои недостатки.Браузеры не отображают их одинаково и т. Д. Я бы не стал использовать это в целях верстки.Попробуйте использовать CSS и что-то вроде min-width.

4 голосов
/ 05 сентября 2011

Имейте в виду, что этот способ не будет работать для любой функции манипуляции со строками, потому что строка неизменна.Они просто возвращают новую строку, а не обновляют существующий экземпляр.

PadRight возвращает новую строку, выравнивающую символы в этой строке по левому краю, заполняя их справауказанный символ Unicode для указанной общей длины.

string Trip_Name1 = Trip_Name1.PadRight(20,' ');

РЕДАКТИРОВАТЬ:

Кажется, что ваш элемент управления обрезает конечные пробелы.Поэтому попробуйте установить отступы для элемента управления, а не для текста.

...