025集—— 转义字符\、字符串详解(对比、分割、日期、数字等)——C#学习笔记

news2025/1/23 10:37:33

 

本文讲解字符串的比较:忽略大小写与不忽略大小写,内存地址是否相同。

当需要对两个字符串的值进行比较和排序而不需要考虑语言惯例时,请使用基本的序号比较。基本的序号比较 (Ordinal) 是区分大小写的,这意味着两个字符串的字符必须完全匹配:“and”不等于“And”或“AND”。常用的变量有 OrdinalIgnoreCase,它将匹配“and”、“And”和“AND”;还有 StringComparison.OrdinalIgnoreCase,它常用于比较文件名、路径名和网络路径,以及其值不随用户计算机的区域设置的更改而变化的任何其他字符串。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class ReplaceSubstrings
    {
        string searchFor;
        string replaceWith;

        static void Main(string[] args)
        {

            // Internal strings that will never be localized.
            string root = @"C:\users";
            string root2 = @"C:\Users";

            //  不忽略大小写 Use the overload of the Equals method that specifies a StringComparison.
            // Ordinal is the fastest way to compare two strings.
            bool result = root.Equals(root2, StringComparison.Ordinal);

            Console.WriteLine("Ordinal comparison: {0} and {1} are {2}", root, root2,
                                result ? "equal." : "not equal.");

            //忽略大小写 To ignore case means "user" equals "User". This is the same as using
            // String.ToUpperInvariant on each string and then performing an ordinal comparison.
            result = root.Equals(root2, StringComparison.OrdinalIgnoreCase);
            Console.WriteLine("Ordinal ignore case: {0} and {1} are {2}", root, root2,
                                 result ? "equal." : "not equal.");

            // A static method is also available.
            bool areEqual = String.Equals(root, root2, StringComparison.Ordinal);


            // String interning. Are these really two distinct objects?编译器会将它们存储在同一位置
            string a = "The computer ate my source code.";
            string b = "The computer ate my source code.";

            // ReferenceEquals returns true if both objects
            // point to the same location in memory.
            if (String.ReferenceEquals(a, b))
                Console.WriteLine("a and b are interned.");
            else
                Console.WriteLine("a and b are not interned.");

            // Use String.Copy method to avoid interning.使用 String..::.Copy 方法可避免存储在同一位置,

            string c = String.Copy(a);

            if (String.ReferenceEquals(a, c))
                Console.WriteLine("a and c are interned.");
            else
                Console.WriteLine("a and c are not interned.");
            Console.ReadLine();
        }
      
        
    }
   
}

 字符串的分割:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class TestStringSplit
    {
        static void Main()
        {
            char[] delimiterChars = { ' ', ',', '.', ':', '\t','\r' };

            string text = "one\ttwo three:four,five six seven";
            System.Console.WriteLine("Original text: '{0}'", text);

            string[] words = text.Split(delimiterChars);
            System.Console.WriteLine("{0} words in text:", words.Length);

            foreach (char  myc in delimiterChars)
            {
                System.Console.WriteLine(myc);
            }
            foreach (string s in words)
            {
                System.Console.WriteLine(s);
            }

            // Keep the console window open in debug mode.
            System.Console.WriteLine("Press any key to exit.");
            System.Console.ReadKey();
        }
    }
   

}

字符串的 索引、部分选取

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
//yngqq@2024年9月3日15:22:45
namespace ConsoleApp1
{
    class StringSearch
    {
        static void Main()
        {
            string str = "Extension methods have all the capabilities of regular static methods.";
            //.IndexOf 字符串的索引位置,从0开始。
            System.Console.WriteLine(str.IndexOf("E"));
            // Write the string and include the quotation marks.
            System.Console.WriteLine("\"{0}\"", str);

            // Simple comparisons are always case sensitive!
            bool test1 = str.StartsWith("extension");
            System.Console.WriteLine("Starts with \"extension\"? {0}", test1);

            // For user input and strings that will be displayed to the end user, 
            // use the StringComparison parameter on methods that have it to specify how to match strings.
            bool test2 = str.StartsWith("extension", System.StringComparison.CurrentCultureIgnoreCase);
            System.Console.WriteLine("Starts with \"extension\"? {0} (ignoring case)", test2);

            bool test3 = str.EndsWith(".", System.StringComparison.CurrentCultureIgnoreCase);
            System.Console.WriteLine("Ends with '.'? {0}", test3);

            // This search returns the substring between two strings, so 
            // the first index is moved to the character just after the first string.
            int first = str.IndexOf("methods") + "methods".Length;
            int last = str.LastIndexOf("methods");
            System.Console.WriteLine("methods".Length + " "+ first + " "+ last );
            //子字符串substring,开始的位置索引(first),总长度减去最后一个字的长度减去开始的位置(last - first)
            //选取部分字符:.substring方法
            string str2 = str.Substring(first, last - first);
            System.Console.WriteLine("Substring between \"methods\" and \"methods\": '{0}'", str2);

            // Keep the console window open in debug mode
            System.Console.WriteLine("Press any key to exit.");
            System.Console.ReadKey();
        }
    }
    /*
    Output:
    "0
    "Extension methods have all the capabilities of regular static methods."
    Starts with "extension"? False
    Starts with "extension"? True (ignoring case)
    Ends with '.'? True
    7 17 62
    Substring between "methods" and "methods": ' have all the capabilities of regular static '
    Press any key to exit.


 
    */

}

 下图为正则表达式查找字符串中是否包含特定字符:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
//yngqq@2024年9月3日15:22:45
namespace ConsoleApp1
{
    class TestRegularExpressions
    {
        static void Main()
        {
            string[] sentences =
            {
            "cow over the moon",
            "Betsy the Cow",
            "cowering in the corner",
            "no match here"
        };

            string sPattern = "cow";

            foreach (string s in sentences)
            {//在控制台输出 s 变量的值,并确保它至少占据24个字符的宽度,不足的部分将以空格填充在左侧
                System.Console.Write("{0,24}", s);
                System.Console.Write("\n\n\n\n");
                System.Console.WriteLine(s);  //( "{0}",s);
                //正则表达式的匹配结果是一个布尔类型值,真、假,表示匹配成功或不成功
                bool mybool = System.Text.RegularExpressions.Regex.IsMatch(s, sPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase);
                System.Console.WriteLine(mybool);
                //三个参数:原始字符串,需要查找的字符串,匹配方法
                if (System.Text.RegularExpressions.Regex.IsMatch(s, sPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase))
                {
                    System.Console.WriteLine("  (match for '{0}' found)", sPattern);
                }
                else
                {
                    System.Console.WriteLine();
                }
            }

            // Keep the console window open in debug mode.
            System.Console.WriteLine("Press any key to exit.");
            System.Console.ReadKey();

        }
    }
    /* Output:
                 cow over the moon



cow over the moon
True
  (match for 'cow' found)
           Betsy the Cow



Betsy the Cow
True
  (match for 'cow' found)
  cowering in the corner



cowering in the corner
True
  (match for 'cow' found)
           no match here



no match here
False

Press any key to exit.
    */

}

 下例为尝试将字符串转为数字类型:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
//yngqq@2024年9月3日15:22:45
namespace ConsoleApp1
{
    class TestRegularExpressions
    {
        static void Main()
        {
            string numString = "1287543"; //"1287543.0" will return false for a long
            string numString1 = "1287543.0"; //"1287543.0" will return false for a long
            long number1 = 0;
            //parse的意思 英 [pɑːz] v. 从语法上分析n. 从语法上分析
            /*在C#中,out 关键字在方法参数列表中有特殊的用途,
             * 它指示该参数是一个输出参数。这意味着方法将会向这个参数写入一个值,
             * 而不是从它读取值(尽管在方法内部,你也可以读取它的值,但主要目的是向它写入值)。
             * out 参数不需要在调用方法之前被初始化,因为调用方法时,方法的实现会负责给它赋值。
             下面是字符串转换成long型数字后,输出到number1变量中*/
            bool canConvert = long.TryParse(numString, out number1);
            Console.WriteLine(number1);
            if (canConvert == true)
                Console.WriteLine("number1 now = {0}", number1);
            else
                Console.WriteLine("numString is not a valid long");
            bool canConvert1 = long.TryParse(numString1, out number1);
            if (canConvert1 == true)
                Console.WriteLine("number1 now = {0}", number1);
            else
                Console.WriteLine("numString1 {0} is not a valid long", numString1);
            byte number2 = 0;//初始化一个字节类型的变量
            numString = "255"; // A value of 256 will return false
            canConvert = byte.TryParse(numString, out number2);
            if (canConvert == true)
                Console.WriteLine("number2 now = {0}", number2);
            else
                Console.WriteLine("numString is not a valid byte");

            numString1 = "256"; // A value of 256 will return false
            canConvert = byte.TryParse(numString1, out number2);
            if (canConvert == true)
                Console.WriteLine("number2 now = {0}", number2);
            else
                Console.WriteLine("numString1 \"{0}\" is not a valid byte", numString1);
            decimal number3 = 0;
            numString = "27.3"; //"27" is also a valid decimal
            canConvert = decimal.TryParse(numString, out number3);
            if (canConvert == true)
                Console.WriteLine("number3 now = {0}", number3);
            else
                Console.WriteLine("number3 is not a valid decimal");
            Console.ReadKey();  

        }
    }
  
   
}

 以下为字符串跟日期类型的转换:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
//yngqq@2024年9月3日15:22:45
namespace ConsoleApp1
{
    class TestRegularExpressions
    {
        static void Main()
        {
            // Date strings are interpreted according to the current culture.
            // If the culture is en-US, this is interpreted as "January 8, 2008",
            // but if the user's computer is fr-FR, this is interpreted as "August 1, 2008"
            string date = "01/08/2008";
            DateTime dt = Convert.ToDateTime(date);
            Console.WriteLine("Year: {0}, Month: {1}, Day: {2}", dt.Year, dt.Month, dt.Day);

            string date1 = "2024年9月3日16:06:21";
            DateTime dt1 = Convert.ToDateTime(date1);
            Console.WriteLine("{0},{1},{2}", dt1.Hour,dt1.Minute ,dt1.Second  );
            //输出当前时间
            DateTime dtnow =DateTime.Now ;
            Console.WriteLine("现在是:{0}",dtnow.ToString() );
            // Specify exactly how to interpret the string.
            IFormatProvider culture = new System.Globalization.CultureInfo("fr-FR", true);

            // Alternate choice: If the string has been input by an end user, you might 
            // want to format it according to the current culture:
            // IFormatProvider culture = System.Threading.Thread.CurrentThread.CurrentCulture;
            DateTime dt2 = DateTime.Parse(date, culture, System.Globalization.DateTimeStyles.AssumeLocal);
            Console.WriteLine("Year: {0}, Month: {1}, Day {2}", dt2.Year, dt2.Month, dt2.Day);
            Console.ReadLine();
            /* Output (assuming first culture is en-US and second is fr-FR):
                Year: 2008, Month: 1, Day: 8
                Year: 2008, Month: 8, Day 1
             */



        }
    }
  
   
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2112291.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

纳米材料咋设计?蛋白质模块咋用?看这里就知道啦!

大家好,今天我们来了解一项关于蛋白质纳米材料设计的研究——《Blueprinting extendable nanomaterials with standardized protein blocks》发表于《Nature》。蛋白质结构复杂,其组装体的设计颇具挑战。但近期的研究取得了新突破,通过设计标…

高精度治具加工的重要性和创新性

在现代制造业中,高精度治具加工扮演着至关重要的角色。它不仅是生产过程中的关键环节,更是推动行业不断创新和发展的重要力量。时利和将解析高精度治具加工的重要性和创新性。 一、高精度治具加工的重要性 1.确保产品质量 高精度治具能够为生产过程提供准…

API安全 | 发现API的5个小tips

在安全测试目标时,最有趣的测试部分是它的 API。API 是动态的,它们比应用程序的其他部分更新得更频繁,并且负责许多后端繁重的工作。在现代应用程序中,我们通常会看到 REST API,但也会看到其他形式,例如 Gr…

基于yolov8的包装盒纸板破损缺陷测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的包装盒纸板破损缺陷检测系统是一种高效、智能的解决方案,旨在提高生产线上包装盒纸板的质量检测效率与准确性。该系统利用YOLOv8这一前沿的深度学习模型,通过其强大的目标检测能力,能够实时识别并标记出包装盒纸板…

HyperLogLog简介

基数估算 基数估算(Cardinality Estimation),也称为 count-distinct problem,一直是大数据领域的重要问题之一,顾名思义,基数估算就是为了估算在一批超级大的数据中,它的不重复元素有多少个。常见的基数估算算法包括L…

HTML 基础,尚优选网站设计开发(二)

最近在恶补HTML相关知识点,本人是后端程序员,看到周围很多人都被裁员了,突然想尽早转变成全栈程序员变成独立开发者,有空余接接私单、商单的 尚优选网站设计开发,HTMLCSSJavaScript实际使用 尚优选网站设计开发页面分析…

《Web性能权威指南》-HTTP-读书笔记

HTTP简史 HTTP(HyperText Transfer Protocol,超文本传输协议)。 HTTP 0.9:只有一行的协议 Tim Berners-Lee罗列HTTP协议的几条宏观设计目标:支持文件传输、能够请求对超文本文档的索引搜索、格式化协商机制&#xf…

全季恒温,网球爱好者的理想运动场馆—轻空间

气膜网球馆内配备了先进的恒温恒压系统,不论四季如何变化,都能为运动员们提供一个稳定、舒适的运动环境。凉爽的空气流通,配合无障碍的视觉体验,打造了一个极致的训练与比赛场所。 大人挥拍竞技,孩子们快乐训练 馆内不…

第四届摩纳哥智能化可持续发展码头交流会

第四届摩纳哥智能化可持续发展码头交流会 摩纳哥游艇码头顾问公司(M3)认为游艇行业的绿色转型需要做到从游艇本身到游艇码头的360度全方位可持续化发展,因此,继今年3月的摩纳哥智能游艇交流会后,他们将于2024年9月22日…

[第三篇 运维与安全管理] ==> 第8章 数据库安全管理与审计

MongoDB 数据库安全管理与审计 8.1 权限管理简介8.2 用户管理8.2.1 创建用户与登录8.2.2 查询用户8.2.3 修改用户8.2.4 删除用户8.2.5 授予用户权限8.2.6 撤销用户权限 8.3 角色管理8.3.1 内建角色8.3.2 创建自定义角色8.3.3 查询自定义角色8.3.4 修改自定义角色8.3.5 删除自定…

day44-测试平台搭建之前端vue学习-基础3

目录 一、条件渲染 二、列表渲染 三、收集表单数据 四、内置指令 五、自定义指令 六、今日学习思维导图 一、条件渲染 1.1.v-if 1).写法 1.1).v-if"表达式" 1.2).v-else-if"表达式" 1.3).v-else"表达式‘ 2).适用于:切换频率较低的场…

Kafka 实战演练:创建、配置与测试 Kafka全面教程

文章目录 1.配置文件2.消费者1.注解方式2.KafkaConsumer 3.依赖1.注解依赖2.KafkaConsumer依赖 本文档只是为了留档方便以后工作运维,或者给同事分享文档内容比较简陋命令也不是特别全,不适合小白观看,如有不懂可以私信,上班期间都…

腾讯地图SDK Android版开发 10 InfoWindow

腾讯地图SDK Android版开发 10 InfoWindow 前言介绍默认风格自定义样式实现方式交互操作播放信息窗口的动画开启多窗口模式 相关类和接口默认样式MarkerOptions 类Marker 类TencentMap类TencentMap.OnInfoWindowClickListener 接口类 自定义样式TencentMap 类TencentMap.InfoWi…

6.2高斯滤波

目录 实验原理 示例代码1 运行结果1 示例代码2 运行结果2 实验代码3 运行结果3 实验原理 在OpenCV中,高斯滤波(Gaussian Filtering)是一种非常常用的图像平滑处理方法。它通过使用一个高斯核(即高斯分布函数)对…

Pr 入门系列之二:导入与管理素材(下)

◆ ◆ ◆ 管理素材 导入素材后,项目面板中每一个媒体都只是原始素材的“链接”。 所以,视频编辑过程中一般情况下都不会破坏原始素材。 1、在不同视图模式下组织素材 项目面板提供了三大视图 View供选用:列表视图、图标视图以及自由格式视图…

基于VAE和流模型的AIGC技术

哇哦,VAE(变分自编码器)和流模型在AI生成内容(AIGC)领域可真是大放异彩呢!🚀🌟 它们就像魔法师一样,能够创造出各种各样、高质量的数据,从图像到音频&#xf…

计算机网络(三) —— 简单Udp网络程序

目录 一,初始化服务器 1.0 辅助文件 1.1 socket函数 1.2 填充sockaddr结构体 1.3 bind绑定函数 1.4 字符串IP和整数IP的转换 二,运行服务器 2.1 接收 2.2 处理 2.3 返回 三,客户端实现 3.1 UdpClient.cc 实现 3.2 Main.cc 实现 …

MongoDB 5.0版本副本集集群

一、MongoDB 5.0版本副本集集群部署 什么是MongoDB的副本集 MongoDB的副本集(Replica Set)是一种用于提高数据库系统可用性、可靠性和数据冗余性的机制。副本集包含一组相互连接的MongoDB节点,其中包括一个主节点(Primary&#…

基于web的赴台展会人员管理系统设计与实现

博主介绍:专注于Java .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的可以…

VSC++: 括号对称比较

括号的使用规则:大括号,中括号,小括号{[()]};中括号,小括号[()];小括号();大括号、中括号、小括号、中括号、小括号、大括号{[()][()]};大括号,中括号,小括号…