在C# 11里,添加了一个叫原始字符串的东西。
这个东西算是我相当喜欢以及期待的功能。
我们先来看看这玩意咋用。
首先,我们先来看看之前如果我们需要定义一个带引号的字符串我们需要怎么做。
var a = "\"test\"";
Console.WriteLine(a);
我们需要把每个引号都加上转义符,变成\"
对吧?
这种操作如果仅仅只有几个引号,那还好说,我们手动加一下就行了。
如果我们要引用一个xml
、json
之类的文本呢?里面可能充斥着大量的引号,我们可能就不得不借助工具先进行转换,然后再放到代码里,并且拿出来的时候还要使用工具转换回去。
现在这个原始字符串功能就可以让我们省去转换这一步,直接把字符串内容作为原始字符串放到内容里。
var test = """
"test"
""test""
""";
Console.WriteLine(test);
这里使用至少三个引号"""
来作为原始字符串的开始与结束。
然后我们就可以在里面随便写引号而不用进行任何转义了。
有人又要问了,那我的字符串里有三个引号怎么办呢?是不是还要转义?
既然我这么问了,那么答案肯定是否定的,大家要注意我用了至少三个引号的说法,这里的至少就很有灵性。
我们可以使用四个引号、五个引号来包裹这个原始字符串,只要前后的引号数量相同即可。
var test = """"
"test"
""test""
"""test"""
"""";
Console.WriteLine(test);
同时原始字符串也支持$来支持嵌套代码。
我们同样可以用
var test = $""""
"test"
""test""
"""test"""
{a}
"""";
Console.WriteLine(test);
来使用花括号插入代码段。
同时,花括号这种东西有时候也会给我们带来烦恼,比如我们要解释一段vue
代码?里面会有{{}}
这种东西?同时我们又想插入代码段?
现在我们可以在原始字符串前面加任意个$,代表我们使用几个花括号来表示要插入的代码块。
var test = $$$""""
"test"
""test""
"""test"""
{{}}
{{{a}}}
"""";
Console.WriteLine(test);
这样我们就可以原样输出{{和}},并且支持{{{a}}}
来输出我们的代码段。
同时原始字符串还处理了一下排版的问题。
众所周知,如果我们用@来定义字符串,那么我们换行以后就只能紧贴着左边来写内容,如果我们想做一下对齐,那么对不起,你产生的字符串不会对齐,你加了多少个空格来对齐,输出的字符串就会给你加多少个空格。
现在原始字符串可以根据你定义的位置来去掉多余的空格。
var test =
$$$""""
"test"
""test""
"""test"""
{{}}
{{{a}}}
"""";
Console.WriteLine(test);
我们直接将原始字符串的开头空一定数量的空格,那么后续所有的对齐都是按照这个空行来进行对齐。
比如我们的例子输出是这样的
"test"
""test""
"""test"""
{{}}
"test"