首页 > 编程语言 >C#基础2024.07.03

C#基础2024.07.03

时间:2024-07-04 21:31:33浏览次数:18  
标签:03 2024.07 Console string C# Substring str WriteLine 字符串

目录

1、字符串的常见方法

 1.1Format(格式化)

1.2IsNullOrEmpty (判断是否为null或空(""))和 IsNullOrWhiteSpace(判断是否为null或空("")或" ")

1.3Equals(判断两个对象是否相等)

1.4Contains(判断字符串中是否包含某个字符串)

1.5Length(计算字符串的长度)

1.6Substring(截取字符串)

1.7IndexOf(指定内容第一次出现的位置)和LastIndexOf(指定内容最后一次出现的位置)

1.8StartsWith和 EndsWith(判断是否以某个元素开头或结尾)

1.9Remove(去掉指定元素)

1.10Revserse(将指定字符串翻转)

1.11Trim(去掉字符串左右两边的空格)

1.13ToUpper(变成大写)和ToLower(变成小写)

1.12Replace(把一个字符串替换为另一个字符串)

1.13Concat(将两个字符串连接到一起)

1.14Join(将数组中的内容用分隔符连接起来)

1.15Split(将字符串中的内容按照分隔符分开,结果保存到数组中)

2.实现身份证的解析

3、遍历磁盘,列出目录和文件、统计文件个数,统计不同类型(后缀)的文件个数。


1、字符串的常见方法

 1.1Format(格式化)

String str = "Hello World";
String name = "陈晨";
int age = 18;
String message = "大家好,我是{0},我今年{1}岁";
//有几个占位符,就需要有几个参数,占位符顺序也必须一致
Console.WriteLine(string.Format(message,name,age));

1.2IsNullOrEmpty (判断是否为null或空(""))和 IsNullOrWhiteSpace(判断是否为null或空("")或" ")

string username = "chenchen";
string password = "123456";

if (string.IsNullOrEmpty(username))
{
    throw new ArgumentNullException("username is null");
}
else
{
    if (string.IsNullOrEmpty(password))
    {
        throw new ArgumentNullException("password is null");
    }
}

Console.WriteLine("登陆成功!");

1.3Equals(判断两个对象是否相等)

string str = "Hello";
//C#大小写敏感,忽略大小写
//if (str.ToLower() == "hello")
if (str.ToLower().Equals("hello"))
{
    Console.WriteLine("相等");
}
else
{
    Console.WriteLine("不相等");
}

1.4Contains(判断字符串中是否包含某个字符串)

string str = "Hello World.";
if (str.Contains("x"))
{
    Console.WriteLine("包含");
}
else
{
    Console.WriteLine("不包含");
}

1.5Length(计算字符串的长度)

string str = "Hello World.你好";
Console.WriteLine(str.Length);

1.6Substring(截取字符串)

string str = "Hello World.你好";
Console.WriteLine(str.Substring(0)); //从第0个字符开始截取,截取到最后:Hello
Console.WriteLine(str.Substring(6,5)); //从第0个字符开始截取5个字符:World
Console.WriteLine(str.Substring(str.Length-2)); //截取组后两个字符:你好

1.7IndexOf(指定内容第一次出现的位置)和LastIndexOf(指定内容最后一次出现的位置)

//为什么斜杠要写两个,第一个斜杠时语言转义字符,第二个斜杠才是真正的斜杠字符
string path = "D:\\AADJ\\app\\Microsoft Visual Studio\\2022\\repos\\DJConsoleProject\\课堂笔记.docx";
Console.WriteLine(path);
Console.WriteLine(path.IndexOf(":")); //输出冒号第一次出现的位置,从0开始计数
Console.WriteLine(path.LastIndexOf(":")); //输出冒号最后一次出现的位置,从0开始计数

1.8StartsWith和 EndsWith(判断是否以某个元素开头或结尾)

path = "D:\\AADJ\\app\\Microsoft Visual Studio\\2022\\repos\\DJConsoleProject\\课堂笔记.docx";
if (path.StartsWith("D:\\AADJ"))  //判断是否以D:\\AADJ开头,如果是,返回true,若不是,返回false
{ 
    Console.WriteLine("属于某个项目的文件");
}
if (path.EndsWith(".docx")) //判断是否以.docx结尾,如果是,返回true,若不是,返回false
{
    Console.WriteLine("word文档");
}else if (path.EndsWith(".jpg"))
{
    Console.WriteLine("图片文档");
}else if (path.EndsWith(".mp4"))
{
    Console.WriteLine("电影文档");
}

1.9Remove(去掉指定元素)

string path = "D:\\AADJ\\app\\Microsoft Visual Studio\\2022\\repos\\DJConsoleProject\\课堂笔记.docx";
Console.WriteLine(path.Remove(path.LastIndexOf("."), 1)); //去掉.

1.10Revserse(将指定字符串翻转)

string str = "我的骄傲";
Console.WriteLine(str.Reverse().ToArray());  //将指定字符串翻转,输出为“傲娇的我”

1.11Trim(去掉字符串左右两边的空格)

string str = "  我的   骄傲  ";
Console.WriteLine("--" + str.Trim() + "--");  //去掉字符串左右两边的空格

1.13ToUpper(变成大写)和ToLower(变成小写)

string str = "Hello World";
Console.WriteLine(str.ToLower()); //hello world
Console.WriteLine(str.ToUpper()); //HELLO WORLD

1.12Replace(把一个字符串替换为另一个字符串)

string str = "  我的   骄傲  ";
Console.WriteLine(str.Replace(" ","")); //将空格替换为"",相当于把空格去掉
Console.WriteLine(str.Replace(' ', '-'));  //将空格替换为”-“

1.13Concat(将两个字符串连接到一起)

string str = "Hello World";
string first = str.Substring(0, 1);//首字母
//大驼峰:HelloWorld
//Concat相当于+,将两个字符串连接到一起
Console.WriteLine(first.ToUpper()+str.Substring(1));
Console.WriteLine(string.Concat(first.ToUpper(), str.Substring(1)));
//小驼峰:helloWorld
Console.WriteLine(first.ToLower()+str.Substring(1));
Console.WriteLine(string.Concat(first.ToLower(),str.Substring(1)));

1.14Join(将数组中的内容用分隔符连接起来)

string[] names = { "刘备", "关羽", "张飞" };
//将数组中的内容用"|"连接起来并输出
Console.WriteLine(string.Join("|",names));  //输出为"刘备|关羽|张飞"

1.15Split(将字符串中的内容按照分隔符分开,结果保存到数组中)

string citystr = "北京,上海,深圳,广州,杭州";
//将字符串中的内容按照","分开,结果保存到数组中
string[] citys = citystr.Split(',');
foreach (string s in citys)
{
    Console.WriteLine(s);
}

2.实现身份证的解析

身份证中包含很多信息,本例主要运用Substring函数来截取身份证中的信息,如出生日期,性别等

public class IDCard
{
    public string Parse(string idCardNumber)
    {
        if (idCardNumber.Length != 18)
        {
            throw new ArgumentException("身份证号码必须为18位");
        }

        // 获取出生日期,
        //年:身份证从index为6开始,向后截取4个字符
        //月:身份证从index为10开始,向后截取2个字符
        //日:身份证从index为12开始,向后截取2个字符
        string birthDate = idCardNumber.Substring(6, 4) + "-" + idCardNumber.Substring(10, 2) + "-" + idCardNumber.Substring(12, 2);

        // 获取性别,身份证号的index为16的数,如果是双数,则为女,单数为男
        int genderCode;
        bool isParseGenderCodeSuccess = int.TryParse(idCardNumber.Substring(16, 1), out genderCode);
        string gender = isParseGenderCodeSuccess && genderCode % 2 == 0 ? "女" : "男";

        return $"出生日期:{birthDate},性别:{gender}";
    }
}

// 使用示例
IDCard idCard = new IDCard();
string result = idCard.Parse("123456199001011234");
Console.WriteLine(result); // 输出:出生日期:1990-01-01,性别:男

3、遍历磁盘,列出目录和文件、统计文件个数,统计不同类型(后缀)的文件个数。

在这个例子中,我们首先定义了一个字典fileExtensions来存储每种文件类型的数量。然后,我们调用TraverseDirectory方法来遍历指定的目录及其子目录。对于每个找到的文件,我们获取其扩展名,并在fileExtensions字典中更新计数。最后,我们在控制台上打印出文件总数和每种文件类型的数量。

注意:这个程序可能会尝试访问你没有权限访问的目录或文件,因此在实际运行时可能会抛出异常。我们通过try-catch语句捕获这些异常,并在控制台上打印出错误信息。

using System;
using System.Collections.Generic;
using System.IO;

class Program
{
    static void Main()
    {
        string path = @"D:"; // 扫描路径

        //定义一个字典fileExtensions来存储每种文件类型的数量
        Dictionary<string, int> fileExtensions = new Dictionary<string, int>();
        
        //调用TraverseDirectory方法来遍历指定的目录及其子目录,并将其放在fileExtensions中
        TraverseDirectory(path, fileExtensions);

        //统计磁盘中所有文件的数量
        Console.WriteLine("文件总数: " + Directory.GetFiles(path, "*", SearchOption.AllDirectories).Length);

        foreach (var extension in fileExtensions)
        {
            Console.WriteLine($"后缀为 {extension.Key} 的文件数量: {extension.Value}");
        }
    }

    static void TraverseDirectory(string directoryPath, Dictionary<string, int> fileExtensions)
    {
        try
        {
            foreach (var directory in Directory.GetDirectories(directoryPath))
            {
                TraverseDirectory(directory, fileExtensions);
            }

            foreach (var filePath in Directory.GetFiles(directoryPath))
            {
                string extension = Path.GetExtension(filePath);
                if (!string.IsNullOrEmpty(extension))
                {
                    if (fileExtensions.ContainsKey(extension))
                    {
                        fileExtensions[extension]++;
                    }
                    else
                    {
                        fileExtensions.Add(extension, 1);
                    }
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"无法访问目录 {directoryPath}: {ex.Message}");
        }
    }
}

标签:03,2024.07,Console,string,C#,Substring,str,WriteLine,字符串
From: https://blog.csdn.net/qq_62830772/article/details/140165688

相关文章

  • 基于LEACH路由协议的网络性能matlab仿真,包括数据量,能耗,存活节点
    1.程序功能描述       LEACH的原理在于它将传感器节点分为两类:簇头节点和普通节点。普通节点将数据发送给距离自己最近的簇头节点,然后簇头节点将收集到的数据融合后发送给基站。这种机制可以减少网络中节点的能耗,并且能够提高数据融合比例,减少传输数据量。本课题将分别对......
  • C#基础2024.07.04
    1.整数转换,整数和字符串,字符串和整数之间的转换怎么实现?//将string类型转为int类型//方法1:使用int.Parse实现stringstr="123";inta=int.Parse(str);//方法2:使用Convert.ToInt32实现intb=Convert.ToInt32(str);//将int类型转换为string类型intn=123......
  • 7.2.SQL注入-基于函数报错extractvalue(),floor()
    注入基于函数报错extractvalue(),floor()-字符型基于extractvalue()爆出数据库版本payload语句:kobe'andextractvalue(0,concat(0x7e,version()))#爆出数据库版本基于floor()floor()函数就是取整数爆出数据版本信息kobe'and(select2from(selectcount(*),......
  • C语言数据类型和变量(三)
    目录1.赋值操作符=1)连续赋值2)复合赋值符2.单目操作符:++、--、+(正号)、-(负号)1)++和--2)+和-3.强制类型转换4.printf()函数1)基本语法 2) 占位符3)占位符列举4)输出格式5.scanf()函数1)基本用法2)scanf的返回值3)占位符4)赋值忽略符*1.赋值操作符=在变量......
  • YOLOv5改进 | 损失函数 | EIoU、SIoU、WIoU、DIoU、FocuSIoU等多种损失函数
    秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转   ......
  • 为什么salesforce需要设置社区端,而不是使用和内部员工同样的环境
    虽然企业可能希望为客户和合作伙伴提供与内部员工相同的环境,但实际上这样做有几个显著的缺点和风险。这些包括:安全性和权限管理:内部员工的系统通常包含敏感和机密的信息,例如财务数据、内部策略和未发布的产品信息。将客户和合作伙伴纳入同一个环境会增加数据泄露的风险。......
  • 2024最新破解版EasyRecovery易恢复软件下载
     一、功能特点2024EasyRecovery易恢复软件,是一款广受欢迎的数据恢复工具。其全面的功能特点让它在数据恢复领域占有一席之地。「EasyRecovery绿色版」最新版夸克网盘获取链接:先保存以防失效https://pan.quark.cn/s/00347f5d6b0eEasyRecovery-mac最新版本下载:https://wm.......
  • WEB03Maven&Mybatis
    maven基础Maven是apache提供的一个项目管理工具,它的作用就是管理项目介绍依赖管理依赖管理主要指的是项目怎样引入依赖包,maven会将所有需要的依赖包放在本地仓库中,然后每个项目通过配置文件引入自己所需要的那部分jar包在maven本地仓库中是按照什么结构存放的?我......
  • YC314A [ 20240704 CQYC省选模拟赛 T1 ] 士兵(solider)
    题意给定一张\(n\)个点\(m\)条边的有向图,每条边上有一个字母。\(q\)次询问,每次询问\(s\tot\)中的最短回文路径的长度是多少。\(n\le10^3,m\le10^5\)Sol区间\(\text{dp}\),设\(f_{i,j}\)表示从\(i\)到\(j\)的最短回文路径的长度。每次枚举一条边\(......
  • AP WIFI 配置工具 --- hostapd、udhcpd
    hostapd它允许将计算机或设备转换为独立的无线接入点,使用户可以连接到该接入点并与局域网中的其他设备进行通信。hostapd的主要功能包括:1.网络身份验证:hostapd支持各种网络身份验证方法,如预共享密钥(PSK)、扩展认证协议(EAP)等。这些方法可用于验证连接到无线接入点的客户端设备,并......