我喜欢在c#中使用@“字符串”,尤其是当我有很多多行文本的时候。唯一的烦恼是我的代码格式在这样做时变得乱七八糟,因为第二行和更大的行被完全推到了左边,而不是使用我格式精美的代码的缩进。我知道这是设计好的,但是有没有什么方法可以让这些行缩进,而不需要在输出中添加实际的制表符/空格?
添加示例:
var MyString = @" this is
a multi-line string
in c#.";
我的变量声明缩进到了“正确”的深度,但是字符串中的第二行和后面的行被推到了左边距--所以代码有点难看。您可以在第2行和第3行的开头添加制表符,但字符串本身将包含这些制表符。有意义吗
5条答案
按热度按时间t1rydlwq1#
字符串扩展怎么样?更新:我重读了你的问题,我希望有一个更好的答案。这也是困扰我的事情,必须像下面这样解决它是令人沮丧的,但从好的方面来说,它确实起作用。
和一个示例控制台程序:
和输出:
如果你决定走这条路,一个更干净的方法来使用它:
8ljdwjyq2#
Cymen给出了正确的解决方案。我使用的方法与Scala的stripMargin()方法类似。下面是我的扩展方法的样子:
dly7yett3#
我想不出一个能完全满足你的问题的答案,但是你可以写一个函数,从字符串中包含的文本行中去掉前导空格,并在每次创建这样的字符串时调用它。
是的,这是一个黑客,但你指定你接受黑客在你的问题。
cld4siwp4#
这里有一个较长的解决方案,它试图尽可能地模仿
textwrap.dedent
。第一行保持原样,预计不会缩进。(您可以使用doctest-csharp基于doctests生成单元测试。)wz3gfoph5#
在C# 11中,你现在可以使用原始字符串。
输出为:
它还结合了字符串插值: