C# C语言中的字符串替换#
我有一个名字列表,我循环使用它们在字符串变量(Bob、George、Will、Terry)中创建一个逗号分隔的列表 我需要名单最终看起来像(鲍勃、乔治、威尔和特里) 如何找到逗号的最后一个实例并将其替换为单词“and”?一旦我找到了最后一个例子,我认为这是一个简单的问题,做一些类似的事情C# C语言中的字符串替换#,c#,string,C#,String,我有一个名字列表,我循环使用它们在字符串变量(Bob、George、Will、Terry)中创建一个逗号分隔的列表 我需要名单最终看起来像(鲍勃、乔治、威尔和特里) 如何找到逗号的最后一个实例并将其替换为单词“and”?一旦我找到了最后一个例子,我认为这是一个简单的问题,做一些类似的事情 string new=ori.Substring(0,start) + rep + ori.Substring(start+rep.Length); 想法?评论?建议 谢谢, Bob这应该能帮到你: var
string new=ori.Substring(0,start) + rep + ori.Substring(start+rep.Length);
想法?评论?建议
谢谢,
Bob这应该能帮到你:
var foo = "Bob, George, Will, Terry";
if (foo.Contains(",")) {
foo = foo.Substring(0, foo.LastIndexOf(",")) + " and" + foo.Substring(foo.LastIndexOf(",")+ 1);
}
您可以使用LINQ和
String.Join的组合。此解决方案不需要逗号的最后一个索引,而且阅读起来“更流畅”
var list=新列表{“鲍勃”、“乔治”、“威尔”、“特里”};
var listAsString=list.Count>1
? string.Join(“,”,list.Take(list.Count-1))+”和“+list.Last()
:list.First();
我不确定您想做什么,但以下代码有效:
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] + ",";
}
}
string original=“(鲍勃、乔治、威尔、特里)”;
字符串结果=”;
string[]splited=original.Split(',');
对于(int i=0;i
我使用split将原始字符串拆分为一个向量,因此我使用这个向量将最后一个逗号替换为单词“and”。这应该适合您。还添加了可选的逗号样式
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
list.Select(i => i).Aggregate((i, j) => i + (list.IndexOf(j) == list.Count -1 ? " and " : " , ") + j);
希望有帮助,首先也是最重要的是,使用牛津逗号。您可以使用字符串函数LastIndexOf
查找最后一个逗号的索引。我建议您阅读并创建一个。当您循环时,每个循环中的索引号都将增加1。如果当前索引号等于(数组列表大小-1),则它是最后一个元素。我的意思是循环中的当前索引比数组或列表的大小小1。希望你有个主意。我想知道为什么你首先要构建一个字符串,然后必须解析来修改它。为什么不在构建第一个字符串时正确构建第二个字符串?@adv12,当我构建原始字符串时,我不知道将有多少元素。在列表完成之前,您是否有确定列表中元素数量的建议?当我添加上面的行时,我得到以下错误。。。异常详细信息:System.ArgumentOutOfRangeException:长度不能小于零。参数名称:length字符串没有逗号时可能会出现这种情况。您需要检查逗号,否则LastIndexOf
将返回-1。我更新了上面的示例。列表长度1
@grek40看起来有点糟糕-你是对的;我已编辑代码以检查列表的长度。请继续检查长度0
,否则调用First()
将引发异常。谢谢,我也喜欢其他逗号样式。
list.Select(i => i).Aggregate((i, j) => i + (list.IndexOf(j) == list.Count -1 ? " and " : " , ") + j);