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);
想法吗?评论?建议吗?
谢谢,鲍勃
这应该适合您。也添加了可选的逗号样式。
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"的最后一个逗号。