Как добавить пробел после 3-го символа в текстовом поле, если длина составляет 6 символов или после 4-го символа, если длина 7 символов

Я пытаюсь добавить пробел после 3-го или 4-го символа в текстовом поле в зависимости от общего количества символов.

Например, если значение текстового поля содержит 6 символов, добавьте пробел после третьего символа. Если значение текстового поля содержит 7 символов, добавьте пробел после 4-го символа.

Пример для 7 символов в текстовом поле

Как добавить пробел после 3-го символа в текстовом поле, если длина составляет 6 символов или после 4-го символа, если длина 7 символов

Как добавить пробел после 3-го символа в текстовом поле, если длина составляет 6 символов или после 4-го символа, если длина 7 символов

Пример для 6 символов в текстовом поле

Как добавить пробел после 3-го символа в текстовом поле, если длина составляет 6 символов или после 4-го символа, если длина 7 символов

Как добавить пробел после 3-го символа в текстовом поле, если длина составляет 6 символов или после 4-го символа, если длина 7 символов

Где я сейчас нахожусь, пытаясь заставить это работать.

private void FirstPostcode_LostFocus(object sender, RoutedEventArgs e)
    {
        if (FirstPostcode.Text.Length == 3)
        {
            FirstPostcode.Text += " ";
        }
    }

Любая помощь будет оценена по достоинству. Спасибо.

Похоже, ваш код предназначен для события TextChanged. При вводе он добавит пробел один раз после того, как будут введены 3 символа. Для LostFocus или ввода нажмите клавишу, вы должны вставить пробел. Вместо этого вы можете использовать замаскированное текстовое поле.

Sinatr 09.04.2019 12:15

Почему вы проверяете, равна ли длина строки 3, когда в своем вопросе вы спрашиваете о длинах 6 и 7?

SᴇM 09.04.2019 12:18

Вам лучше отформатировать почтовый индекс при выходе из коробки, что вы планируете делать для почтовых индексов, таких как «B1 1AA»? поскольку одна константа - это последние 3 цифры.

BugFinder 09.04.2019 12:20

ты хочешь сделать в mvvm?

Avinash Reddy 09.04.2019 12:20

@BugFinder Я не заметил, что это 3, и я использую его для физических свойств, поэтому я бы никогда не использовал почтовые индексы, такие как «B1 1AA».

Java2YourScript 09.04.2019 12:35
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
5
852
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете использовать 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();

Другие вопросы по теме