如果字符串末尾有逗号,则将逗号从字符串中移除。

5
以下字符串中最好的去掉,的方法是什么。
  1. one,two,three,
  2. three,four,five
  3. six,seven,eight,nine,ten,

    int strLength = someString.Length;
    
    if (strLength > 0)
    {
         findString = findString .Substring(0, str.Length - 1);
    }
    
    if (findString ==",")
    {
         someString.Remove(someString.Length - 1)
    }
    
我已经在StackExchange编辑器中直接编译了这段代码以作为示例(可能存在语法错误)。 请将以上内容仅视为逻辑目的。 如果有人可以为上述逻辑提供优化代码,我将不胜感激。 更新:实际上,我想从字符串末尾删除“,”,而不是在中间出现。

1
向一群程序员询问“最佳方式”几乎保证每个人都会给出1个回复 :)。 在许多情况下,“最佳”太主观了。 询问“最快的方法”或“最少内存使用”等更具建设性的问题以获得更好的答案。 - Andrew Grothe
9个回答

17

这个怎么样?

yourString = yourString.TrimEnd(',');

2
这是我认为最好的方法。这正是TrimEnd()的用途。唯一需要确认的是,如果OP想要将末尾的多个连续逗号全部修剪而不仅仅是最后一个(我很确定答案会是“是”)。 - Matthew Watson
请注意,TrimEnd会从字符串中全部移除结尾的出现内容,因此如果字符串末尾有2个逗号,TrimEnd将同时移除它们。 - Guido Preite
2
这应该是被接受的答案,以我个人之见。简洁明了通常在可读性和长期代码支持方面最为有效。 - Andrew Grothe

8

一个单行选项:

someString = someString.EndsWith(",") ? someString.Substring(0, someString.Length - 1) : someString;

编辑:

根据Dilshod答案,可以这样表达:

someString = someString.TrimEnd(',');

在我看来,这更好。


谢谢,你说得对。我很感激其他的回答,但这个似乎是最简洁明了的。 - Learning
1
在我看来,yourString = yourString.TrimEnd(','); 这个答案更短,更清洁。 - Matthew Watson
为什么要重新发明轮子呢? - EaterOfCode
不确定为什么,但我错误地认为如果逗号不存在,TrimEnd会失败。虽然我不反对一些SO声望,但是是的,TrimEnd是最短的一行代码。 - Andrew Grothe

3
你可以使用Replace函数。
 yourString.Replace(',','');

这会从字符串中仅删除最后一个“,”还是所有“,”? - Learning
请执行以下代码:yourString= yourString.Remove(yourString.Length - 1); - Deepanshu Goyal
这将删除从(字符串长度)-1开始的所有内容,即仅从最后一个单词开始。 - Deepanshu Goyal
没有这样的符号 '' - Dmitrii Dovgopolyi
好的,我想这就是一个空字符串。 - Deepanshu Goyal
1
@Deepanshu 你的代码无法编译,因为在C#中没有空字符符号。 - Dmitrii Dovgopolyi

2
这个怎么样?
if(someString.Last() == ',')
{
    someString = someString.Substring(0, someString.Length - 1);
}

我想要从字符串末尾删除逗号,而不是在中间删除。 - Learning
@EaterOfCorpses,你能提供一个证明链接吗? - Dmitrii Dovgopolyi
@KnowledgeSeeker 你有一个包含多行的字符串还是针对不同的行有不同的字符串? - Dmitrii Dovgopolyi
@DmitryDovgopoly 看这里,似乎字符串更快 https://compilr.com/eaterofcorpses/charvsstring/main.cs - EaterOfCode
@EaterOfCorpses 实际上在我的本地机器上,我得到了相反的结果。 - Dmitrii Dovgopolyi
显示剩余2条评论

0

请检查下面的代码:

 string s = "one,two,three,";   
 s = s.Remove(s.LastIndexOf(","));

这会不会移除字符串中的最后一个逗号,即使它不是字符串的最后一个字符? - Gwasshoppa

0
someString = someString.Remove(someString.Length - 1);

这将删除字符串的最后一个字符。在执行此操作之前,请确保检查字符串的长度。


0
请尝试以下操作:
 string s = "x,y,";
 if (s.Length > 0 && s.EndsWith(","))
   s = s.TrimEnd(',');

0
使用 LastIndexOf()。
string str="One,Two,Three,";
string newString=str.Remove(str.LastIndexOf(',')) //Result= "One,Two,Three";

str = "One,Two,Three" result = "One,TwoThree"str = "一,二,三" 结果 = "一,二三" - Sayse
1
@Sayse:要求是如果字符串末尾有逗号而不在中间,则将其从字符串中删除。请阅读查询中的更新部分。 - Sunil
1
我只是想让你知道,你的代码不起作用,我的最初评论甚至是错误的,它会返回“one,two”,我认为。 - Sayse

0

这取决于你想要做什么...用""替换","可能是你所需要的全部? 你期望的输出值是什么?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接