C#:我希望单词的每个字母都以新行开头

Posted

技术标签:

【中文标题】C#:我希望单词的每个字母都以新行开头【英文标题】:C#: I want every letter of a word to begin in a new line 【发布时间】:2015-10-18 19:02:13 【问题描述】:
using System;

class HelloCSharp

     static void Main()
     
         Console.WriteLine("Hello C#");
     

我希望输出是:

H
e
l
l
o 

C
#

但是每个字母都应该换行

我是新人,但我一直在寻找,但找不到答案。应该是Environment.NewLine 的东西吗?

【问题讨论】:

循环遍历字符串中的字符并使用Environment.NewLine,就像你猜到的那样。 【参考方案1】:
string Hello = "Hello C#";

foreach(char i in Hello)

 Console.WriteLine(i);

一个更简单的解决方案。

【讨论】:

此问题已包含多个答案和一个已接受的答案。您可以在您的答案与其他答案不同的地方添加信息吗?也知道从长远来看,仅代码的答案没有用处。【参考方案2】:

给你:

string str = "Hello C#"
char[] arr = str.ToCharArray();

foreach (char c in arr)

    Console.WriteLine(c);

【讨论】:

嗯,这至少适用于 BMP 中的那些。希望你不要在外面得到任何东西,也不要得到多代码点的东西。【参考方案3】:

真正的男人只使用正则表达式,一切! :-)

string str = "Hello\nC#";
string str2 = Regex.Replace(str, "(.)", "$1\n", RegexOptions.Singleline);
Console.Write(str2);

此正则表达式搜索任意一个字符 (.) 并将其替换为找到的字符加上 \n ($1\n)

(不,拜托……这是错误的……除非你真的很绝望,否则你不应该在 C# 中使用正则表达式)。

【讨论】:

正如老笑话所说 - 您使用正则表达式来解决问题。现在你有 2 个问题。【参考方案4】:

谢谢大家,但您提供的所有选项看起来有点复杂。这不是更容易吗:

const string world = "Hello World!";
 for ( int i = 0; i < world.Length; i++)
    
        Console.WriteLine(world[i]);
    

我只是问,因为我刚开始学习,是不是最有效最快的方法写一个程序最好?我知道他们有很多方法可以让事情发挥作用。

【讨论】:

【参考方案5】:

通过Join方法实现:

var text = "Hello C#".ToCharArray();
var textInLines = string.Join("\n", text);

Console.WriteLine(textInLines);

【讨论】:

【参考方案6】:

编写一个函数来遍历一个字符串。像这样:

void loopThroughString(string loopString)

    foreach (char c in loopString)
    
        Console.WriteLine(c);
    

现在你可以调用这个函数了:

loopThroughString("Hello c#");

编辑

当然,如果您喜欢 linq,您可以将字符串转换为单字符字符串列表,然后通过在每个字符之间添加新行并在控制台上打印来合并它

string myString = "Hello c#";
List<string> characterList = myString.Select(c => c.ToString()).ToList();
Console.WriteLine(string.Join("\n", characterList));

【讨论】:

以上是关于C#:我希望单词的每个字母都以新行开头的主要内容,如果未能解决你的问题,请参考以下文章

C#常用的命名规则汇总

用户输入一个单词然后在java的新行上打印该单词的字母[关闭]

C# 部分命名规则

以字母z开头的英文单词

C字母开头的英语单词都有哪些`?

如何从Python中的文本中提取以字母A到L开头的单词?