C#基础2024.07.03

目录

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}");
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值