我正在学习C#中的字符串实用程序,我有一个替换字符串部分的方法。
使用replace方法我需要输出
等输出“旧文件名: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)
{
}
}
其他“if”语句现在是空的,直到我找到第一个如何做。
答案 0 :(得分:1)
执行此操作的正确方法是使用Regular Expressions。
理想情况下,您可以将“file”与“file00”中的“00”分开。然后取“00”,将其转换为Int32
(使用Int32.Parse()
),然后使用String.Format()
重建字符串。
答案 1 :(得分: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());
}
答案 2 :(得分: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;
}