在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"

最新文章

  1. Spark大数据的学习历程
  2. 你缺什么(codevs 2928)
  3. Quartz的线程池解析
  4. hdu-5834 Magic boy Bi Luo with his excited tree(树形dp)
  5. 基本包装类型:Boolean、Number 和String
  6. linux web php 安全相关设置
  7. Android——ProgressDialog 进度条对话框
  8. Ubuntu--服务器版本系统安装图解教程
  9. Mysql报错:1172 - Result consisted of more than one row
  10. JavaScript DOM高级程序设计1.3-常见陷阱--我要坚持到底!
  11. LA 6540 Fibonacci Tree
  12. MVC 避免黄页
  13. Filter 字符编码Filter 一
  14. HDU 2546 饭卡(01背包裸题)
  15. python 实现rsa 的加密解密存读取(PEM格式证书)【转发】
  16. 51NOD 数字1的数量
  17. 使用git命令创建分支到团队项目
  18. MyBatis where标签语句
  19. 402. Remove K Digits/738.Monotone Increasing Digits/321. Create Maximum Number
  20. 反射就是获取该类的.class文件里面的方法,属性

热门文章

  1. 活动报名 | 如何基于开源项目 Tapdata PDK,快速完成数据源和目标的开发?
  2. 优化对称加密的 shell 脚本
  3. day04 缓冲字符流__异常处理
  4. 007面试题__==和equals的区别
  5. VIM学习笔记-1
  6. 如何应对外包公司(文思海辉)的Python后端面试
  7. Taurus.MVC WebAPI 入门开发教程3:路由类型和路由映射。
  8. 技术分享 | 自制GreatSQL Docker镜像
  9. Java多线程超级详解(只看这篇就够了)
  10. DS二叉树——二叉树之数组存储