【问题标题】:How to simplify Environment.NewLine()? [duplicate]如何简化 Environment.NewLine()? [复制]
【发布时间】:2017-11-15 20:57:33
【问题描述】:

嘿 StackOverflow 用户,

我正在用 C# 开发一个不和谐的机器人。为了保持我的代码干净,我想使用一个向字符串添加更多行的函数。

我想避免的一个例子是:

Description = $"Hey { username }! {Environment.NewLine + Environment.NewLine}{funMsg[randomNumber]}",

我尝试做的是:

public string inertlines(int i)
    {
        string st = "";
        for (int c = 0; c < i; c++)
        {
            st += Environment.NewLine();
        }
        return st;
    }

Visual Studio 编译器给出有关 NewLine 语句的错误。 "不可调用的成员 'Environment.NewLine' 不能像方法一样使用。

如果有人能告诉我如何避免这种情况和/或可以替代 Environment.NewLine() 方法的另一种方法,我将不胜感激。

最后我想澄清这不是重复的。对于新程序员来说,这篇文章确实解释了更多更具体的问题。与我相比的帖子具有相同的解决方案,但是,问题不一样。它甚至是一个完全不同的主题。最重要的是,初学者可以复制解决方案以轻松地向字符串添加额外的行或了解函数如何更好地工作,因为 Environment.NewLine() 是新程序员下众所周知且易于理解的方法。

提前致谢, 耶勒

【问题讨论】:

  • NewLine 不是一种摆脱对联的方法,它应该只是 Environment.NewLine
  • 有时生活中简单的事情会让你惊叹。感谢您帮助我!
  • Discord 不关心您的操作系统首选的换行符是什么。首先在这种情况下使用Environment.NewLIne 是没有意义的。使用它的唯一真正原因是在写出文本文件时。
  • 我使用它是因为我使用 Discord.net 的 EmbedBuilder 类嵌入了一些东西
  • @jellekeulemans 这并不能解释为什么您会使用操作系统首选的换行符,而不是 Discord 期望使用的换行符,这不一定相同。

标签: c# console-application


【解决方案1】:

字符串是不可变的。如果您要连接它们中的许多,为了效率起见,请尝试使用 StringBuilder:

public string insertlines(string s, int i)
{
    StringBuilder sb = new StringBuilder();
    sb.Append(s);  // create the string
    for (int c = 0; c < i; c++)
    {
        sb.AppendLine(""); // add a line each time
    }
    return sb.ToString();
}

【讨论】:

  • 好的,谢谢!不知道
  • 如果要连接的字符串很少,StringBuilder 并不总是最佳选择。
  • @Steve 同意,在这个函数的情况下,它真的取决于i 的范围。通常情况下,正确的选择取决于要求。
  • 你需要一个参数's'但你从不使用它?但除此之外,我会这样做
  • AppendLine 不需要空字符串,只需调用 AppendLine();
【解决方案2】:

答案其实很简单

public string insertlines(int i)
    {
        string st = "";
        for (int c = 0; c < i; c++)
        {
//Environment.NewLine shouldn't have "()" in it's own class

            st += Environment.NewLine;
        }
        return st;
    }

在字符串中创建白线的用法是:

Console.WriteLine($"I want 2 {insertLines(2)} blanc lines under the 2"});

或者为了简化这个例子:

Console.WriteLine("I want 2 " + insertLines(2) + " blanc lines under the 2");

对于阅读本文的任何人,请使用“\n”作为字符串中的新行。我学到了很多关于编码的知识,但我认为我的问题和答案并不是最好的、最有帮助的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    • 2017-10-09
    • 1970-01-01
    • 2011-09-08
    • 2021-11-09
    • 1970-01-01
    相关资源
    最近更新 更多