仅删除每行末尾的逗号

时间:2012-12-11 00:52:29

标签: html regex

我有一个包含逗号的列表,但我在同一个列表中还有其他逗号,我不想删除,所以我想知道有没有办法只删除每行文本的最后一个逗号?

4 个答案:

答案 0 :(得分:1)

最简单的方法是使用正则表达式语句,如:

替换(/,\ s * $ /,'',[content]);

这将查找逗号字符(,)后面跟着行末尾的任何空格(\ s *)($)。根据语言或程序的不同,您必须单独传递每一行,或设置多行标记。

答案 1 :(得分:1)

因为我们不知道您正在使用哪种语言,所以我只能为您提供将捕获 last 逗号的正则表达式:

,(?!.*,)

如果您将此正则表达式的匹配替换为空白,则将删除最后一个逗号。

因此,正则表达式使用前瞻来断言匹配的逗号后面没有逗号。环顾四周的好处是不捕获,所以你不必替换任何反向引用等。

答案 2 :(得分:1)

如果你的意思是删除最后一个字符(如果它是逗号),那么你应该做类似的事情 更换 ^(.*),$$1

。{

a,b,c,将替换为a,b,ca,b,c,d将与正则表达式不匹配。

如果您的意思是删除最后一个逗号,即使之后还有其他内容,请执行将^(.*),([^,]*)$替换为$1$2

之类的操作

a,b,c,将替换为a,b,ca,b,c,d将替换为a,b,cd

答案 3 :(得分:1)

RegEx很好,但很难阅读。如果您希望在C#...

等语言中使用更详细的算法
public string RemoveLastComma(string input)
{
if (input.Contains(",") == false)
    return input;

    int position = 0;

    for (int i = input.Length; i > 0; i--)
    {
        if (input.Substring(i-1, 1) == ",")
        {
            position = i;
            break;
        }
    }
    var firstSegment = input.Substring(0, position-1);
    var lastSegement = input.Substring(position, (input.Length - position));
    return firstSegment + lastSegement;
}