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

.Net 7内容汇总(2)--原始字符串的更多相关文章

  1. 【转载】C#检测客户端输入的内容是否含有危险字符串

    用户在客户端提交的内容有时候并不可信,如果客户端提交的内容中含有危险字符串信息,则很有可能造成应用程序安全性问题,如SQL注入风险等.因此在接收客户端提交过来的数据后,我们首先需要判断数据中是否含有危 ...

  2. scala学习手记6 - 字符串与多行原始字符串

    scala中的字符串类就是java中的java.lang.String类.不过scala也为String提供了一个富封装类:scala.runtime.RichString. scala可以将java ...

  3. 13.Python字符串详解(包含长字符串和原始字符串)

    简单地理解,字符串就是“一串字符”,也就是用引号包裹的任何数据,比如“Hello,Charlie”是一个字符串,“12345”也是一个字符串. Python 要求,字符串必须使用引号括起来,可以使用单 ...

  4. JAVA----编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符

    package com.pb.demo.packclass.demo1; import java.util.HashSet; /** * 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符 ...

  5. devi into python 笔记(六)正则表达式 原始字符串

    字符串函数replace: #string.replace: #字符串的replace方法:替换子串,不改变原来的字符串 s = "broad road" #打印出来会发现不单单是 ...

  6. SQL写操作 设置内容 (数组转字符串)

    SQL写操作 设置内容 (数组转字符串) SQL set内容 SQL操作数组转字符串 SQL写操作 set内容 (数组转字符串) [ 封装方法 ] function getSqlSet( $data ...

  7. python原始字符串

    str1='let's go' File "<input>", line 1 str1='let's go' ^ SyntaxError: invalid syntax ...

  8. Android开发环境内容汇总

     Android开发环境将分为SDK相关内容.Eclipse ADT相关内容.模拟器AVD相关内容.调试器DDMS相关内容.日志LogCat相关内容.连接驱动ADB相关内容.内存泄露检测工具MAT相关 ...

  9. Android开发环境——模拟器AVD相关内容汇总

     Android开发环境将分为SDK相关内容.Eclipse ADT相关内容.模拟器AVD相关内容.调试器DDMS相关内容.日志LogCat相关内容.连接驱动ADB相关内容.内存泄露检测工具MAT相关 ...

随机推荐

  1. NC50965 Largest Rectangle in a Histogram

    NC50965 Largest Rectangle in a Histogram 题目 题目描述 A histogram is a polygon composed of a sequence of ...

  2. NC15163 逆序数

    NC15163 逆序数 题目 题目描述 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序.一个排列中逆序的总数就称为这个排列的逆序数.比如一个序列为 \ ...

  3. Java8 函数式【1】:一文读懂逆变

    Java8 函数式[1]:一文读懂逆变 禁止转载 pure function 协变 逆变 Java8 引入了函数式接口,从此方法传参可以传递函数了,有人说: 不就是传一个方法吗,语法糖! lambda ...

  4. mvc url重写

    public class newDomainRoute : Route { private Regex domainRegex; private Regex pathRegex; public str ...

  5. CF1709A Three Doors 题解

    题意 有三扇门,每扇门都有一把钥匙与该门上的数字相对应,若数字一样就可以打开. 其中有两扇门后有钥匙,一扇门后为空. 现拥有一把钥匙 \(x\),给出三扇门后的钥匙(若为 \(0\) 即门后没有钥匙) ...

  6. 微信安装包从0.5M暴涨到260M,为什么我们的程序越来越大?

    最近,微信安装包从v1.0的0.5M暴涨到V8.0的 260M引起大家热议,为什么我们开发的程序越来越大?本文做一个简单的讨论.(本文主要根据B站科技老男孩<逆向工程微信安装包,11年膨胀575 ...

  7. 记vs2019 The view 'xxx' was not found.

    版本:Visual Studio 2019 16.8.2/16.8.4.net core 3.1 1.检测是否是拼写错误2.检查.csproj为文件中是否包含有下面的content remove(这种 ...

  8. mysql 跨库事务XA

    前一段时间在工作中遇到了跨库事务问题,后来在网上查询了一下,现在做一下整理和总结. 1.首先要确保mysql开启XA事务支持 SHOW VARIABLES LIKE '%XA%' 如果innodb_s ...

  9. YII容器类依赖注入

    程序 = 算法 + 数据结构 数据结构 制约了 算法的===>>>>依赖注入 依赖注入也就是解数据结构和算法耦合的思想 <?php /** * Created by Ph ...

  10. 【web自动化测试】playwright安装失败怎么办

    在安装中,如果没有输入 playwright install, 则不会安装浏览器,运行 playwright codegen 时会报浏览器找不到的错误: "chromium" br ...