c#入门 关于split的用法

Puss 2019-03-31 01:06:26
这个程序是把用户输入的单词排序之后再输出,我现在想让用户在输入单词时,单词之间用空格分开,最后输入用逗号分隔的形式,但是我一直搞不清为什么split只能在回车的时候才有用,本来应该很简单的问题,我实在是想不通了

我的期望:输入一些单词,用空格分隔,最后输出的是用逗号分隔的单词。
目前问题:输入一些单词,必须得用回车分隔,他们才会输出用逗号分隔的形式,如果我用空格来分隔就不行。

{
List<string> list = new List<string>();
while (true)
{
string zfc = Console.ReadLine();
if (zfc.Length == 0)
{
Console.WriteLine("已经完成");
break;
}
var v = list.SingleOrDefault(x => x == zfc);
if (v == null)
{
list.Add(zfc);
}
else
{
Console.WriteLine("已经存在");
}
}
Console.WriteLine("刚刚输入的单词是:");
foreach (var item in list)
{
Console.WriteLine(item);
}
Console.WriteLine("排序之后:");
list.Sort(); //但是如果不是一个单词回车一次就无法排序
foreach (var i in list)
{
Console.WriteLine(i);
}
}
...全文
557 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
闭包客 2019-04-02
  • 打赏
  • 举报
回复
你的代码并没有出现 Split 方法。 你可以了解一下 ReadLine 方法,这样就知道为什么一定要回车了。
秋的红果实 2019-04-01
  • 打赏
  • 举报
回复
引用 7 楼 qq_44807783 的回复:
[quote=引用 6 楼 秋的红果实 的回复:] replace成逗号不行吗?
现在就是只有在我输入一个单词回车一次,输入一个单词回车一次,才能排序和逗号间隔,我想应该是整个程序的某个地方哪里有点问题,或者是哪里可以再更正。
List<string> list = new List<string>();
            while (true)
            {
                string zfc = Console.ReadLine();
                if (zfc.Length == 0)
                {
                    Console.WriteLine("已经完成");
                    break;
                }
                var v = list.SingleOrDefault(x => x == zfc);
                if (v == null)
                {
                    list.Add(zfc);
                }
                else
                {
                    Console.WriteLine("已经存在");
                }
            }
            Console.WriteLine("刚刚输入的单词是:");
            foreach (var item in list)
            {
                Console.WriteLine(item);
            }

            Console.WriteLine("用逗号分隔之后:");
            string str = string.Join(",", list.ToArray());
            Console.WriteLine(str);

            Console.WriteLine("排序之后:");
            list.Sort();
            foreach (var i in list)
            {
                Console.WriteLine(i);
            }
[/quote] 既然单词不能重复,就一个单词一回车吧,而且你使用了list one two three four这样输入的话,需要存入string(而不是逐个单词再存入list),关键是这种方式下不好去掉重复单词 程序好像没问题 你非要one two three four这样输入,可以使用split按照空格分解出单词,再存入list,期间可以查重复
Puss 2019-03-31
  • 打赏
  • 举报
回复
引用 6 楼 秋的红果实 的回复:
replace成逗号不行吗?
现在就是只有在我输入一个单词回车一次,输入一个单词回车一次,才能排序和逗号间隔,我想应该是整个程序的某个地方哪里有点问题,或者是哪里可以再更正。
List<string> list = new List<string>();
while (true)
{
string zfc = Console.ReadLine();
if (zfc.Length == 0)
{
Console.WriteLine("已经完成");
break;
}
var v = list.SingleOrDefault(x => x == zfc);
if (v == null)
{
list.Add(zfc);
}
else
{
Console.WriteLine("已经存在");
}
}
Console.WriteLine("刚刚输入的单词是:");
foreach (var item in list)
{
Console.WriteLine(item);
}

Console.WriteLine("用逗号分隔之后:");
string str = string.Join(",", list.ToArray());
Console.WriteLine(str);

Console.WriteLine("排序之后:");
list.Sort();
foreach (var i in list)
{
Console.WriteLine(i);
}
秋的红果实 2019-03-31
  • 打赏
  • 举报
回复
replace成逗号不行吗?
stherix 2019-03-31
  • 打赏
  • 举报
回复
你要最后用逗号分隔也容易
Console.WriteLine(string.Join(",", Console.ReadLine().Split(' ').Distinct().OrderBy(x => x)));
首先你要明白,如果不用回车分隔,要么只要ReadLine一次,那么那个循环就没必要了 最后string.Join(",",字符串列表/数组);可以把字符串用,连接起来
Puss 2019-03-31
  • 打赏
  • 举报
回复
引用 1 楼 stherix 的回复:
Console.ReadLine().Split(' ').Distinct().OrderBy(x => x).ToList().ForEach(x => Console.WriteLine(x));
我试了一下但是为什么还是不能把空格转化为,啊?
stherix 2019-03-31
  • 打赏
  • 举报
回复
引用 2 楼 qq_44807783 的回复:
引用 1 楼 stherix 的回复:
Console.ReadLine().Split(' ').Distinct().OrderBy(x => x).ToList().ForEach(x => Console.WriteLine(x));
抱歉我不是很能看懂,这个语句是加到最后吗?
只要这一句话就行了 输入到输出
Puss 2019-03-31
  • 打赏
  • 举报
回复
引用 1 楼 stherix 的回复:
Console.ReadLine().Split(' ').Distinct().OrderBy(x => x).ToList().ForEach(x => Console.WriteLine(x));
抱歉我不是很能看懂,这个语句是加到最后吗?
stherix 2019-03-31
  • 打赏
  • 举报
回复
Console.ReadLine().Split(' ').Distinct().OrderBy(x => x).ToList().ForEach(x => Console.WriteLine(x));

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧