我有一个包含逗号的列表,但我在同一个列表中还有其他逗号,我不想删除,所以我想知道有没有办法只删除每行文本的最后一个逗号?
答案 0 :(得分:1)
最简单的方法是使用正则表达式语句,如:
替换(/,\ s * $ /,'',[content]);
这将查找逗号字符(,)后面跟着行末尾的任何空格(\ s *)($)。根据语言或程序的不同,您必须单独传递每一行,或设置多行标记。
答案 1 :(得分:1)
因为我们不知道您正在使用哪种语言,所以我只能为您提供将捕获 last 逗号的正则表达式:
,(?!.*,)
如果您将此正则表达式的匹配替换为空白,则将删除最后一个逗号。
因此,正则表达式使用前瞻来断言匹配的逗号后面没有逗号。环顾四周的好处是不捕获,所以你不必替换任何反向引用等。
答案 2 :(得分:1)
如果你的意思是删除最后一个字符(如果它是逗号),那么你应该做类似的事情
更换
^(.*),$
与$1
a,b,c,
将替换为a,b,c
,a,b,c,d
将与正则表达式不匹配。
如果您的意思是删除最后一个逗号,即使之后还有其他内容,请执行将^(.*),([^,]*)$
替换为$1$2
a,b,c,
将替换为a,b,c
,a,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;
}