C#从匹配位置开始替换字符串的结尾

时间:2014-08-19 15:22:46

标签: c# regex

我有一个字符串(来自文件名),如下所示:Mytext_edit1345.jpg

我只是想削减" _edit1345"所以我可以得到Mytext.jpg

Regex.Replace是最适合我的方式吗?

string result = Regex.Replace(Bildname, pattern, "");

我需要什么样的模式?

3 个答案:

答案 0 :(得分:2)

String.SubstringPath.GetExtension一起使用,如:

string fileName = "Mytext_edit1345.jpg";
string newFileName = fileName;
if (fileName.Contains('_'))
{
    newFileName = fileName.Substring(0, fileName.IndexOf('_')) +
                 Path.GetExtension(fileName);
}

答案 1 :(得分:2)

您可以使用Path类和字符串方法,例如String.Remove

string fileNameWOE = Path.GetFileNameWithoutExtension(fileName);
int indexOfUnderscore = fileNameWOE.IndexOf('_');
if(indexOfUnderscore >= 0)
    fileNameWOE = fileNameWOE.Remove(indexOfUnderscore);
fileName = fileNameWOE + Path.GetExtension(fileName);

答案 2 :(得分:1)

使用以下模式匹配您想要缩减的子字符串(从_到下一个.),

_[^.]*

DEMO

您的代码将是,

string str = "Mytext_edit1345.jpg";
string result = Regex.Replace(str, @"_[^.]*", "");
Console.WriteLine(result);
Console.ReadLine();

IDEONE