2014-01-04 2 views
0

Я изучаю строковые утилиты в C#, и у меня есть метод, который заменяет части строки.Утилиты String в C#

Используя метод, мне нужно, чтобы получить выход такой, как

заменить «старое название файла: file00»

«Новое имя файла: file01»

В зависимости от того, что пользователь хочет изменить это к.

Я ищу помощь при создании метода (NextImageName) заменить только цифры, но не имя файла.

class BuildingBlock 
{ 
    public static string ReplaceOnce(string word, string characters, int position) 
    { 
     word = word.Remove(position, characters.Length); 
     word = word.Insert(position, characters); 
     return word; 
    } 

    public static string GetLastName(string name) 
    { 
     string result = ""; 
     int posn = name.LastIndexOf(' '); 
     if (posn >= 0) result = name.Substring(posn + 1); 
     return result; 
    } 

    public static string NextImageName(string filename, int newNumber) 
    { 
     if (newNumber > 9) 
     { 
      return ReplaceOnce(filename, newNumber, (filename.Length - 2)) 
     } 
     if (newNumber < 10) 
     { 

     } 
     if (newNumber == 0) 
     { 

     } 
    } 

Другие инструкции «если» пусты, пока я не узнаю, как сделать первый.

+0

мутноватый, что вы просите. Метод 'ReplaceOnce' изменяет только два последних символа' filename'. Что вы хотите по-другому? –

+0

ReplaceOne ожидает строку как второй параметр, вы передаете целое число, этот код никогда не будет компилироваться, как есть – Steve

+0

Просьба привести несколько примеров того, что вы хотите выполнить, что значительно облегчит вам помощь. –

ответ

1

Правильный способ сделать это - использовать Regular Expressions.

В идеале вы должны отделить «файл» от «00» в «file00». Затем возьмите «00», преобразуйте его в Int32 (используя Int32.Parse()), а затем перестройте свою строку с помощью String.Format().

0
public static string NextImageName(string filename, int newNumber) 
{ 
    string oldnumber = ""; 
    foreach (var item in filename.ToCharArray().Reverse()) 
     if (char.IsDigit(item)) 
      oldnumber = item + oldnumber ; 
     else 
      break; 

    return filename.Replace(oldnumber ,newNumber.ToString()); 
} 
0
public static string NextImageName(string filename, int newNumber) 
{ 
    int i = 0; 
    foreach (char c in filename) // get index of first number 
    { 
     if (char.IsNumber(c)) 
      break; 
     else 
      i++; 
    } 

    string s = filename.Substring(0,i); // remove original number 
    s = s + newNumber.ToString();  // add new number 

    return s; 

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