问题描述
|
我想知道如何在没有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);
这是可行的,但是前两个渲染了大量空白。是否可以编写多行而不使用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.\";
}
} }
看一下我的花括号格式,它如何正确显示并突出显示(抱歉,在堆栈上很难显示,但它突出的位置很远)。
可悲的是,notepad ++做得更好,当它包装后,它就直接在变量下。
解决方法
没有任何形式的字符串文字,它允许多行字符串,但是在每行的开头都修剪空格,没有。
, 只需删除空白。它可能不漂亮,但是可以工作:
string a = @\"this is the first line
and this is the second\";
请注意,第二行需要一直移到左边距:
或者,您可以使用\\n
字符,但随后不能使用逐字字符串(@前缀):
string a = \"first line\\nsecond line\";
, 您包含在多行字符串中的所有空格将始终被包括在内。
但是...尝试像这样格式化代码:
string a = String.Format(
@\"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
{0}xxxxxxx\",\"GGG\");
希望看起来更好。
, 解决方案是在查看此类代码时启用自动换行。这样既可以保留格式,又可以查看包装的整个字符串,而无需在编辑器中滚动。
您可以通过按Ctrl + e,W或从菜单中选择“编辑/高级/自动换行”来执行此操作。
, 您可以在保留代码格式的同时进行以下操作:
正则表达式是可以接受的
您的字符串的空格始终最大为1个字符:
var words = Regex.Replace(
@\"lorem ipsum dolor sit amet consectetur adipiscing
elit sed feugiat consectetur pellentesque nam ac
elit risusac blandit dui duis rutrum porta tortor ut
convallis duis rutrum porta tortor ut yth convallis
lorem ipsum dolorsit amet consectetur adipiscing elit
sed feugiat consectetur pellentesque nam ac elit
risus ac blandit dui duis rutrum porta tortor ut
convallis duis rutrum porta tortor ut convallis
\",@\"\\s+\",\" \");