在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. iOS OC纯代码企业级项目实战之我的云音乐(持续更新))

    简介 这是一个使用OC语言,从0使用纯代码方式开发一个iOS平台,接近企业级商业级的项目(我的云音乐),课程包含了基础内容,高级内容,项目封装,项目重构等知识:主要是讲解如何使用系统功能,流行的第三方 ...

  2. 详解SQL中Groupings Sets 语句的功能和底层实现逻辑

    摘要:本文首先简单介绍 Grouping Sets 的用法,然后以 Spark SQL 作为切入点,深入解析 Grouping Sets 的实现机制. 本文分享自华为云社区<深入理解 SQL 中 ...

  3. Oracle数据库常用查询语句

    1.[oracle@dbserver ~]$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.4.0 Production on Tue Mar 15 15:1 ...

  4. PTA(BasicLevel)-1023 组个最小数

    一. 问题定义 给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位). 例如:给定两个 0,两个 1,三个 5,一个 8,我 ...

  5. Git Rebase操作

    概括 rebase翻译过来为"变基",可以理解为改变基础,它可以用于分支合并和修改提交记录. 合并分支的区别 我们知道merge操作也可以用于分支合并,但是其和rebase操作有着 ...

  6. linux新建分区和磁盘

    1.查看已有分区 ]# df –hl fdisk -l 查看磁盘情况 ]# fdisk –l 2.对未分区的进行分区 # fdisk /dev/vdb 硬盘分区 创建了一个55G的分区磁盘 1.新建第 ...

  7. umask计算创建文件、目录的默认权限

    很多人以为 创建文件默认权限就是 666-umask=创建文件的默认权限 创建目录的默认权限就是 777-umask=创建目录的默认权限   这种计算其实是不严谨的 为什么我们创建的文件的权限是 64 ...

  8. ooday01类_对象_访问成员

    笔记: 什么是类?什么是对象? 现实生活中是由很多很多对象组成的,基于对象抽出了类 对象:软件中真实存在的单个个体/东西 类:类别/类型,代表一类个体 类是对象的模子,对象是类的具体的实例 类中可以包 ...

  9. linux 编译式安装nginx

    ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local ...

  10. Python花式读取大文件(10g/50g/1t)遇到的性能问题(面试向)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_97 最近无论是面试还是笔试,有一个高频问题始终阴魂不散,那就是给一个大文件,至少超过10g,在内存有限的情况下(低于2g),该以什 ...