我有一个名单列表,我循环使用它们在字符串变量(Bob,George,Will,Terry)中创建逗号分隔列表。
我需要最终的列表(Bob,George,Will和Terry)。
如何找到逗号的最后一个实例并将其替换为“and”?一旦找到LAST实例,我认为这样做就像
一样简单string new=ori.Substring(0,start) + rep + ori.Substring(start+rep.Length);
思考?评论?建议?
谢谢, 鲍勃
答案 0 :(得分:3)
这对你有用。添加了备用逗号样式。
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);
答案 1 :(得分:1)
这应该适合你:
var foo = "Bob, George, Will, Terry";
if (foo.Contains(",")) {
foo = foo.Substring(0, foo.LastIndexOf(",")) + " and" + foo.Substring(foo.LastIndexOf(",")+ 1);
}
答案 2 :(得分:1)
您可以结合使用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();
答案 3 :(得分:1)
您可以使用Linq,
$expire_date = time() + $request->input('expire_date') * 3600;
希望有所帮助,
答案 4 :(得分:0)
我不确定你想做什么,但以下代码有效:
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”。