2012-04-17 2 views
4

Я пытаюсь сравнить первые 3 символа строки, я пытаюсь использовать подстроку, а затем сравнивать.Подстрока, если строка не достаточно длинная, замените символы пробелами

Строки считываются из входного файла, а строка может быть не длинна 3 символа. если строка не длинна 3 символа, я хочу, чтобы метод substring заменил пустые символы пробелами.

Как я могу это сделать.

Текущий код выдает исключение, когда строка недостаточно длинная.

ответ

8

Использование String.PadRight

myString.PadRight(3, ' '); 
// do SubString here.. 

Вы также можете создать .Left extension method, который не выбрасывает исключение, когда строка не является достаточно большим:

public static string Left(this string s, int len) 
{ 
    if (len == 0 || s.Length == 0) 
     return ""; 
    else if (s.Length <= len) 
     return s; 
    else 
     return s.Substring(0, len); 
} 

Использование:

myString.Left(3); 
3

Вы можете использовать этот грязный хак:

var res = (myStr+" ").Substring(...); 
+0

+1 Мне нравится этот грязный хак, используйте его много :) – mellamokb

+2

@mellamokb Я использую его много, но я думаю, что переключусь на «PadRight» (я просто поддержал ваш ответ). – dasblinkenlight

4

Используйте один из String.PadRight() methods перед вызовом подстроки():

string subString = myString.PadRight(3).Substring(0,3); 

Если используется перегрузка с одним параметром, как я сделал выше, он будет вставлять пробелы.

string subString1 = string1.PadRight(3).Substring(0,3); 
string subString2 = string2.PadRight(3).Substring(0,3); 
if (String.Compare(subString1, subString2) == 0) 
{ 
    // if equal 
} 
else 
{ 
    // not equal 
} 

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

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