C#中的字符串替换

时间:2016-10-17 18:30:29

标签: c# string

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

我需要最终的列表(Bob,George,Will和Terry)。

如何找到逗号的最后一个实例并将其替换为“and”?一旦找到LAST实例,我认为这样做就像

一样简单
string new=ori.Substring(0,start) + rep + ori.Substring(start+rep.Length);

思考?评论?建议?

谢谢, 鲍勃

5 个答案:

答案 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”。