C# 字符串:替换最后一个";。“什么?”;一串?

C# 字符串:替换最后一个";。“什么?”;一串?,c#,.net,regex,C#,.net,Regex,我有一些字符串,我想用新字符串替换最后一个。例如: string replace = ".new"; blabla.test.bla.text.jpeg => blabla.test.bla.text.new testfile_this.00001...csv => testfile_this.00001...new 因此,不管有多少个..,我只想更改最后一个,以及最后一个之后的字符串 我在C#中看到有Path.ChangeExtension,但它只与文件结合使用——难道没有办法只

我有一些字符串,我想用新字符串替换最后一个。例如:

string replace = ".new";
blabla.test.bla.text.jpeg => blabla.test.bla.text.new
testfile_this.00001...csv => testfile_this.00001...new
因此,不管有多少个
..
,我只想更改最后一个,以及最后一个
之后的字符串


我在C#中看到有Path.ChangeExtension,但它只与文件结合使用——难道没有办法只与字符串一起使用吗?我真的需要正则表达式吗?

您可以使用
string.LastIndexOf('.')

当然,需要进行一些检查,以确保LastIndexOf找到最终点


然而,看到其他答案,让我说,虽然Path.ChangeExtension有效,但我觉得使用依赖于操作系统的文件处理类的方法来操作字符串是不对的。(当然,如果这个字符串真的是文件名,那么我的反对无效)

您可以使用
string.LastIndexOf('.')

当然,需要进行一些检查,以确保LastIndexOf找到最终点

然而,看到其他答案,让我说,虽然Path.ChangeExtension有效,但我觉得使用依赖于操作系统的文件处理类的方法来操作字符串是不对的。(当然,如果这个字符串真的是文件名,那么我的反对无效)

输出:

blabla.test.bla.text.new
输出:

blabla.test.bla.text.new

不,这不需要正则表达式。只要.LastIndexOf和.Substring就足够了

string replace = ".new";
string input = "blabla.bla.test.jpg";

string output = input.Substring(0, input.LastIndexOf('.')) + replace;
// output = "blabla.bla.test.new"

不,这不需要正则表达式。只要.LastIndexOf和.Substring就足够了

string replace = ".new";
string input = "blabla.bla.test.jpg";

string output = input.Substring(0, input.LastIndexOf('.')) + replace;
// output = "blabla.bla.test.new"

ChangeExtension
应该像广告宣传的那样工作

string replace = ".new";
string file = "testfile_this.00001...csv";

file = Path.ChangeExtension(file, replace);

>> testfile_this.00001...new

ChangeExtension
应该像广告宣传的那样工作

string replace = ".new";
string file = "testfile_this.00001...csv";

file = Path.ChangeExtension(file, replace);

>> testfile_this.00001...new

请使用此功能

public string ReplaceStirng(string originalSting, string replacedString)
{
    try
    {
        List<string> subString = originalSting.Split('.').ToList();
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < subString.Count - 1; i++)
        {
            stringBuilder.Append(subString[i]);
        }
        stringBuilder.Append(replacedString);
        return stringBuilder.ToString();
    }
    catch (Exception ex)
    {
        if (log.IsErrorEnabled)
            log.Error("[" + System.DateTime.Now.ToString() + "] " + System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName + " :: " + System.Reflection.MethodBase.GetCurrentMethod().Name + " :: ", ex);
            throw;
    }
}
publicstringreplacestirng(stringoriginalsting,stringreplacedstring)
{
尝试
{
List subString=originalSting.Split('.').ToList();
StringBuilder StringBuilder=新的StringBuilder();
对于(int i=0;i
请使用此功能

public string ReplaceStirng(string originalSting, string replacedString)
{
    try
    {
        List<string> subString = originalSting.Split('.').ToList();
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < subString.Count - 1; i++)
        {
            stringBuilder.Append(subString[i]);
        }
        stringBuilder.Append(replacedString);
        return stringBuilder.ToString();
    }
    catch (Exception ex)
    {
        if (log.IsErrorEnabled)
            log.Error("[" + System.DateTime.Now.ToString() + "] " + System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName + " :: " + System.Reflection.MethodBase.GetCurrentMethod().Name + " :: ", ex);
            throw;
    }
}
publicstringreplacestirng(stringoriginalsting,stringreplacedstring)
{
尝试
{
List subString=originalSting.Split('.').ToList();
StringBuilder StringBuilder=新的StringBuilder();
对于(int i=0;i
Huh,仅更改字符串的扩展名。好啊我不知道^^嗯,只为字符串更改扩展名。好啊我不知道看起来不错