c#中的字符串替换

本文关键字:替换 字符串 | 更新日期: 2023-09-27 18:13:28

我有一个名字列表,我循环遍历它们,在字符串变量(Bob, George, Will, Terry)中创建一个逗号分隔的列表。

我需要这个列表最终看起来像(鲍勃,乔治,威尔和特里)。

如何找到逗号的最后一个实例并用单词"and"替换它?一旦我找到LAST实例,我认为这是一个简单的事情,做一些像

string new=ori.Substring(0,start) + rep + ori.Substring(start+rep.Length);

想法吗?评论?建议吗?

谢谢,鲍勃

c#中的字符串替换

这应该适合您。也添加了可选的逗号样式。

var names = "Bob, George, Will, Terry";
var lastCommaPosition = names.LastIndexOf(',');
if (lastCommaPosition != -1) 
{
    names = names.Remove(lastCommaPosition, 1)
               //.Insert(lastComma, " and");
                 .Insert(lastCommaPosition, ", and");
}
Console.WriteLine(names);

可以使用LINQ和String.Join的组合。这个解决方案不需要逗号的最后一个索引,而且读起来"更流畅"。

var list = new List<string> { "Bob", "George", "Will", "Terry" };
var listAsString = list.Count > 1 
        ? string.Join(", ", list.Take(list.Count - 1)) + " and " + list.Last()
        : list.First();

您可以使用Linq,

list.Select(i => i).Aggregate((i, j) => i + (list.IndexOf(j) == list.Count -1 ? " and "  :  " , ") + j);

希望帮助,

这应该能帮到你:

var foo = "Bob, George, Will, Terry";
if (foo.Contains(",")) {
    foo = foo.Substring(0, foo.LastIndexOf(",")) + " and" + foo.Substring(foo.LastIndexOf(",")+ 1);
}

我不确定您想要做什么,但是下面的代码可以工作:

string original = "(Bob, George, Will, Terry)";
            string result = "";
            string[] splited = original.Split(',');
            for (int i = 0; i < splited.Count(); i++)
            {
                if(i == splited.Count() - 2)
                {
                    result += splited[i] + " and";
                }
                else if(i == splited.Count() - 1)
                {
                    result += splited[i];
                }
                else
                {
                    result += splited[i] + ",";
                }
            }

我使用split将原始字符串分割为一个向量,所以我使用这个向量来替换单词"and"的最后一个逗号。