首页 > 其他分享 >.Net 7内容汇总(2)--原始字符串

.Net 7内容汇总(2)--原始字符串

时间:2022-09-21 14:56:03浏览次数:70  
标签:Console -- 引号 汇总 字符串 原始 test Net 我们

在C# 11里,添加了一个叫原始字符串的东西。

这个东西算是我相当喜欢以及期待的功能。


我们先来看看这玩意咋用。

首先,我们先来看看之前如果我们需要定义一个带引号的字符串我们需要怎么做。

var a = "\"test\"";
Console.WriteLine(a);

我们需要把每个引号都加上转义符,变成\"对吧?

这种操作如果仅仅只有几个引号,那还好说,我们手动加一下就行了。


如果我们要引用一个xmljson之类的文本呢?里面可能充斥着大量的引号,我们可能就不得不借助工具先进行转换,然后再放到代码里,并且拿出来的时候还要使用工具转换回去。


现在这个原始字符串功能就可以让我们省去转换这一步,直接把字符串内容作为原始字符串放到内容里。

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"

标签:Console,--,引号,汇总,字符串,原始,test,Net,我们
From: https://www.cnblogs.com/j4587698/p/16715562.html

相关文章

  • java去掉html标签,只留文本内容
    publicstaticStringdelHTMLTag(StringhtmlStr){StringregEx_script="<script[^>]*?>[\\s\\S]*?<\\/script>";//定义script的正则表达式StringregE......
  • 线程与网络编程
    线程与网络编程1、传统模型传统模型,主要采用阻塞IO+单独开启线程处理连接的方式,基本上是所有操作系统都支持的一种方式。主要通过一个线程不断接受连接,对于每个连接单独......
  • SqlServer 约束(主键,外键,检查,非空,默认,唯一)
    主键-primarykey除外键约束外都可创建表单时直接赋予如:1createtable表名(2Idbigintprimarykey,3IdCardnvarchar(60)check(len(IdCard)>=......
  • 前端怎么对一张图片特定某些点进行点击事件(image-map)
    图片热区技术插入一张图片,并设置好图像的有关参数,在<img>标记中设置参数usemap="#image-map",以表示对图像地图的引用。用<map>标记设定图像地图的作用区域,并取名:image-ma......
  • Net5 控制台程序引入Nlog 、Nlog配置文件解读
    十年河东,十年河西,莫欺少年穷学无止境,精益求精nlog是继log4Net后C#编程界又一颗闪亮的星,俗称superstar1、先学会使用1.1、新建控制台应用程序,引入如下nuget1、Micros......
  • RabbitMQ+docker安装教程
    安装Rabbitmq1.使用docker查询rabbitmq的镜像dockersearchrabbitmq   2.安装镜像安装name为rabbitmq的这里是直接安装最新的,如果需要安装其他版本在rabbitmq......
  • 浅论前后端,浅论前后端架构分离与否
    前端:通常来说,就是我们可以看得到的部分---一般使用前端语言进行,例如HTML、JS、css等语言进行代码的实现比如:web前后台的界面微信小程序H5app的界面后端:(看不到的......
  • Object.freeze的应用
    概念Object.freeze() 方法可以冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可......
  • 代码阅读题-结构体大小
    题目如下,小米23秋招-9.20-笔试首先这是一道C++的题,注意到的第一点是这个二维数组的初始化方式,他是给了一种一维数组的赋值方式,虽然没见过,但是想当然应该是逐层填充经测......
  • 视频直播系统源码,Flutter Hero 实现共享元素转场动画
    视频直播系统源码,FlutterHero实现共享元素转场动画1未使用Hero时的页面切换列表页面 classListPageextendsStatefulWidget{ constListPage({Key?key}):s......