2013-12-04 4 views
0

, когда textbox содержит только цифры Я использую метод padleft, здесь мой textbox содержит буквенно-цифровой текст, для этого мне нужно заполнить нулями.Заполнение буквенно-цифрового текста текстового поля нулями

textBox1.Text = textBox1.Text.PadLeft(5, '0'); 

Эта линия работает, когда textbox содержит цифры, как 1.Output является 00001. Теперь, если мой текст в текстовом поле является A1.output должно быть A00001. , если выход AB1 должен быть AB00001. количество цифр должно быть 5

ответ

1

Вы можете использовать RegEx для этого:

var parts = Regex.Split(textBox1.Text, "(\\d+)"); 
textBox1.Text = parts.Length<2 ? parts[0] : parts[0] + parts[1].PadLeft(5, '0'); 

Update: если вы не хотите использовать Regex, вы можете попробовать следующий код:

int i = 0; 
for(;i < textBox1.TextLength; i++){ 
    if(char.IsDigit(textBox1.Text[i])) break; 
} 
textBox1.Text = textBox1.Text.Substring(0,i) + 
       textBox1.Text.Substring(i).PadLeft(5,'0'); 
+0

Сво работает, но общее количество цифр должно быть 5, как это, когда я вошел в AB1, AB00001 должен быть выходной – user2897388

+0

@ user2897388 Это потому, что ваш вопрос был неправ, теперь вы редактировали и ответа гораздо проще, см. обновление. –

+0

Благодарим за обновление – user2897388

0

Вы можете использовать этот код. Я предположил, что вы хотите разделить буквы на цифры. Он также будет работать, если у вас есть только цифры или цифры.

string input = "A1"; 

var match = Regex.Match(input, @"([a-zA-Z]*)(\d*)"); 

string group1 = match.Groups.Count > 1 ? match.Groups[1].Value : ""; 
string group2 = match.Groups.Count > 2 ? match.Groups[2].Value : ""; 

string output = group1 + group2.PadLeft(6 - group1.Length - group2.Length, '0'); 
+1

Спасибо, что ответили на его рабочий штраф – user2897388

Смежные вопросы