Заполнение строки с использованием метода PadRight

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

Trip_Name1.PadRight(20);

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

Trip_Name1.PadRight(20,' ');

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

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

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

Ответ 1

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

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

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

EDIT:

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

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

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

EDIT 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.

Ответ 2

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

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

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

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

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