Я пытаюсь добавить пробел после 3-го или 4-го символа в текстовом поле в зависимости от общего количества символов.
Например, если значение текстового поля содержит 6 символов, добавьте пробел после третьего символа. Если значение текстового поля содержит 7 символов, добавьте пробел после 4-го символа.
Пример для 7 символов в текстовом поле
Пример для 6 символов в текстовом поле
Где я сейчас нахожусь, пытаясь заставить это работать.
private void FirstPostcode_LostFocus(object sender, RoutedEventArgs e)
{
if (FirstPostcode.Text.Length == 3)
{
FirstPostcode.Text += " ";
}
}
Любая помощь будет оценена по достоинству. Спасибо.
Почему вы проверяете, равна ли длина строки 3
, когда в своем вопросе вы спрашиваете о длинах 6
и 7
?
Вам лучше отформатировать почтовый индекс при выходе из коробки, что вы планируете делать для почтовых индексов, таких как «B1 1AA»? поскольку одна константа - это последние 3 цифры.
ты хочешь сделать в mvvm
?
@BugFinder Я не заметил, что это 3, и я использую его для физических свойств, поэтому я бы никогда не использовал почтовые индексы, такие как «B1 1AA».
Вы можете использовать Insert()
, чтобы вставить пробел в третьей позиции справа.
if (FirstPostcode.Text >= 3)
{
FirstPostcode.Text = FirstPostcode.Text.Insert(FirstPostcode.Text.Length - 3, " ");
}
Если вы хотите сначала проверить, был ли уже вставлен пробел, и не хотите вставлять его снова, вы можете использовать индексатор в строке.
if (FirstPostcode.Text.Length == 3
|| FirstPostcode.Text.Length >= 4
&& FirstPostcode.Text[FirstPostcode.Text.Length - 4] != ' ')
{
FirstPostcode.Text = FirstPostcode.Text.Insert(FirstPostcode.Text.Length - 3, " ");
}
Попробуйте следующее:
string[] inputs = { "NR105BE", "BD11AA" };
foreach (string input in inputs)
{
string output = "";
if (input.Length == 7)
{
output = input.Substring(0, 4) + " " + input.Substring(4);
}
else
{
output = input.Substring(0, 3) + " " + input.Substring(3);
}
Console.WriteLine(output);
}
Console.ReadLine();
Похоже, ваш код предназначен для события
TextChanged
. При вводе он добавит пробел один раз после того, как будут введены 3 символа. ДляLostFocus
или ввода нажмите клавишу, вы должны вставить пробел. Вместо этого вы можете использовать замаскированное текстовое поле.