首页 新闻 会员 周边

看到一个面试题:用一行代码去掉字符串的首尾逗号,至少两种方法

0
悬赏园豆:20 [已解决问题] 解决于 2012-02-13 11:01

看到一个面试题:用一行代码去掉字符串(如",a,b,c,")的首尾逗号,至少两种方法

我想到的方法是:

string test = ",a,b,c,";
var one=test.Trim(new char[] { ',' });
var two=test.Replace(",", " ").Trim().Replace(" ", ",");
var three=test.TrimEnd(new char[] { ',' }).TrimStart(new char[] { ',' });

有没有其他方法?

乱世文章的主页 乱世文章 | 初学一级 | 园豆:147
提问于:2012-02-07 16:31
< >
分享
最佳答案
0

你的第二种是不对的,如果string中间有空格和逗号,就会都被替换成逗号。其实这道面试题很蛋疼,没什么意义。1 3 是对的,不过可以写的好看点: test.Trim(','); 看起来舒服点,本质是一样的。非要再来一个的话:

string three = new string(s.Where((ch, n) => n > 0 && n < s.Length - 1 || ch != ',').ToArray());
收获园豆:20
水牛刀刀 | 大侠五级 |园豆:6350 | 2012-02-07 17:07

关键要看题目是怎么要求的,如果字符串为:

string test=",,a,b,c,,";

你这种方法也有问题。

如果string中间跟示例一样比较规则的话,还有一种方案:

var four = string.Join(",", test.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries));
artwl | 园豆:16736 (专家六级) | 2012-02-07 17:39

@artwl: 发现我的方案跟一楼的一样,哈哈

artwl | 园豆:16736 (专家六级) | 2012-02-07 17:40

@artwl: 如果是test= ",,a,b,c,,",那就得问面试官:第2个逗号到底算不算是“首”,倒数第二个逗号算不算是“尾”。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-02-08 10:22
其他回答(2)
0

var four = test.Substring(1, 5);

上善若水123 | 园豆:210 (菜鸟二级) | 2012-02-07 16:57

var five = String.Join(",", test.Split(',').Where(x=>!string.IsNullOrEmpty(x)));

支持(0) 反对(0) 上善若水123 | 园豆:210 (菜鸟二级) | 2012-02-07 17:04

@上善若水123: 对于four: 你是在逗我?对于你的five:中间有连续两个逗号的就不对了,比如 ,a,,,,b,c.  

支持(0) 反对(0) 水牛刀刀 | 园豆:6350 (大侠五级) | 2012-02-07 17:08

@上善若水123: 你怎么不直接写 var four = "a,b,c";

支持(0) 反对(0) 水牛刀刀 | 园豆:6350 (大侠五级) | 2012-02-07 17:09
0

你这上面的也不是一行代码 只不过你连写了而已啊

zhdw | 园豆:0 (初学一级) | 2012-02-07 17:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册