C# 如何处理多行字符串?

C# 如何处理多行字符串?,c#,C#,我想知道如果没有concat符号(+),如何处理多行字符串 我试过这个 string a = String.Format(@"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz {0}xxxxxxx", "GGG"); string b = @"zzzzzzzzzzzzzzzzzzzzz

我想知道如果没有concat符号(+),如何处理多行字符串

我试过这个

 string a = String.Format(@"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
                                            {0}xxxxxxx", "GGG");

            string b = @"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
                                            xxxxxxx";


            string c = "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
                                            + "xxxxxxx";
           Console.WriteLine(a);
           Console.WriteLine(b);
           Console.WriteLine(c);
这是可行的,但前2个渲染了大量空白。在呈现字符串后,是否可以在不使用concat符号的情况下写入多行并忽略结尾空白,而不使用类似replace的东西

编辑

using System; using
System.Collections.Generic; using
System.Linq; using System.Text;

namespace ConsoleApplication2 {
    public class Test
    {

        public Test()
        {
        }

        public void MyMethod()
        {
            string someLongString = "On top of an eager overhead weds a
pressed vat.  How does a chance cage
the contract? The glance surprises the
radical wild.";
        }

} }
看看我的大括号是怎么形成的,而且很突出(对不起,很难在堆栈上显示出来,但它很突出)


可悲的是,记事本++做得更好,当它包装它时,它正好在变量下面。

没有允许多行字符串但在每行开头修剪空白的字符串文字形式,没有。

任何包含在多行字符串中的空白都将始终被包含

然而。。。尝试按如下方式格式化代码:

string a = String.Format(
@"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
{0}xxxxxxx", "GGG");

。。。希望这样看起来更好。

只需删除空白即可。它可能并不漂亮,但它是有效的:

string a = @"this is the first line
and this is the second";
请注意,第二行需要一直到左边距:

或者,您可以使用
\n
字符,但不能使用逐字字符串(@前缀):


解决方案是在查看这样的代码时启用自动换行。这将保留格式,并允许您查看包装的整个字符串,而无需在编辑器中滚动


您可以通过按Ctrl+eW或从菜单中选择编辑/高级/Word Wrap来执行此操作。

您可以在保留代码格式的同时执行此操作,前提是:

  • 正则表达式是可以接受的
  • 字符串的空格长度始终不超过1个字符:

var words=Regex.Replace(
@“lorem ipsum door sit amet concertetur adipising”
佩伦茨克家族的精英
金樱子之门酒店
杜松子酒和杜松子酒
知识精英
sed封建主义圣职者佩伦茨克南ac精英
红葡萄酒和红葡萄酒
杜松子酒曲柳酒曲柳酒曲柳酒曲柳酒曲柳酒曲柳酒曲柳酒曲柳酒曲柳酒曲柳酒曲柳酒曲柳酒曲柳酒曲柳酒曲柳酒曲柳酒曲柳酒曲柳酒曲柳酒曲柳酒曲柳
“,@”\s+“,”);

只是不要添加所有额外的空格…这是什么用例?我要么1)将文字的后续行向左对齐。(无论如何,它们都必须手动缩进,因此这实际上“更容易”)2)将字符串文本放入资源文件中(不过,默认的字符串资源编辑器使用起来很烦人)或3)仅使用串联方法。快乐的编码。@chobo2,您可以走大路,将这些字符串放入资源中。这也几乎为您带来了免费的本地化功能。@RedFilter=如果我有一个很长的句子,我想把它分成多行,以便在代码中更容易阅读。我只是想让代码中的长句更具可读性。所以我认为第二种选择行不通。@chobo2:我认为长句不应该首先出现在代码中,而应该出现在资源文件中。这太糟糕了。建议采用什么方法使代码中的长句看起来可读,并保留要显示的格式?我发现,如果你有一个很长的句子或什么的,你必须开始使用concat符号,有时会出现在页面上。发现它会让人更难阅读。也和我的第一个例子一样,当你在一个字符串中得到一个长句时会发生什么。格式化如何将它分开,使它不是一行。@chobo2最简单的方法是在编辑器中启用换行,请参阅我的答案。@chobo2:通常我发现如果我想在代码中输入大量文本,最好将其包含在程序集中的单独资源中。这样我就不必担心转义等问题。您可以在资源文件中放置占位符吗?所以,如果说我有一个像“bob先生,你好吗…”这样的句子,我可以把“{0}{1},你好吗”@chobo2:你可以把字符串放在资源文件中,然后像平常一样使用
string.Format
。好吧,我想这是解决问题的办法,但有一点我注意到了,我不喜欢,那就是它与格式有关(见我的编辑)
string a = "first line\nsecond line";