首页 > 编程语言 >C#字符串梳理及练习

C#字符串梳理及练习

时间:2024-08-14 17:23:05浏览次数:14  
标签:Console string C# hello str WriteLine 字符串 梳理

一、字符串API梳理:

字符串:字符串不可以被修改 , 一般调用字符串API的时候使用新的变量来接收

using System;
using System.Linq;

namespace _10.梳理字符串API
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 1。
            string str = "hello";
            // 字符串串联(合并) string.Concat() || string.Join()
            char[] chars = str.Concat(new char[] { ' ', 'w', 'o', 'r', 'l', 'd' }).ToArray();
            Console.WriteLine(chars);

            string result1 = string.Concat(str, " ", "world", " how are you");
            Console.WriteLine(result1);

            // 判断字符串以xx开头,以xx结尾
            Console.WriteLine(str.StartsWith("He", StringComparison.OrdinalIgnoreCase));
            Console.WriteLine(str.EndsWith("llo", StringComparison.OrdinalIgnoreCase));

            // 判断字符串相等
            string str2 = "hello";
            //if ("abc" == "abc")
            //if (str == str2)
            if (str.Equals(str2))
            {
                Console.WriteLine("成立");
            }

            Class1 cls1 = new Class1();
            Class1 cls2 = new Class1();
            //if (cls1 != cls2)
            if (!cls1.Equals(cls2))
            {
                Console.WriteLine("不成立");
            }
            Console.WriteLine(object.ReferenceEquals(cls1, cls2));

            Console.WriteLine("-----------");

            // 格式化:string.Format()

            // 查索引:IndexOf(),LastIndexOf()

            // 插入  e索引是1
            Console.WriteLine(str.Insert(2, "AAA")); // HeAAAllo

            // 判断空  string.IsNullOrEmpty() string.IsNullOrWhiteSpace()

            // 不足宽度补字符  str.PadLeft(), str.PadRight()
            Console.WriteLine(str.PadLeft(10));
            Console.WriteLine(str.PadLeft(10, 'A'));
            Console.WriteLine(str.PadRight(10));
            Console.WriteLine(str.PadRight(10, 'A'));
            // 删除
            Console.WriteLine(str.Remove(1, 2));
            // 替换
            Console.WriteLine(str.Replace('l', 'L'));
            Console.WriteLine(str.Replace("ll", "L"));
            // 自动扩容
            // 截取
            Console.WriteLine(str.Substring(0, 2));
            // 去除空白  str.Trim(),str.TrimLeft(),str.TrimRigth()
            // 拆分 str.Split()
            // 转换大小写 str.ToUpper(), str.ToLower()
            // 转换成字符数组 str.ToCharArray()

            // 2。hello
            char[] chars2 = new char[5];
            str.CopyTo(1, chars2, 1, 4);
            Console.WriteLine(str);
            Console.WriteLine(chars2);

            if (str.CompareTo("hello") == 0)
            {
                Console.WriteLine("成立1");
            }

            if ("a".CompareTo("b") < 0)
            {
                Console.WriteLine("成立2");
            }

            if ("b".CompareTo("a") > 0)
            {
                Console.WriteLine("成立3");
            }
            /*if("HELLO" == "hello")
            {
                Console.WriteLine("成立4");
            }*/

            if (string.Compare("A", "a", true) == 0)
            {
                Console.WriteLine("成立4");
            }

            string result2 = string.Copy(str);
            Console.WriteLine(result2);

            Console.WriteLine(string.ReferenceEquals(result2, str));
            Console.WriteLine(string.ReferenceEquals("hello", "hello"));

            string str3 = "world";
            string str4 = string.Intern(str3);
            Console.WriteLine(string.ReferenceEquals(str3,str4));
        }
    }
}

 二、字符串练习:

1:字符串反序输出,如:hello ===> olleh

string str = "hello";
char[] array = str.ToCharArray();
Array.Reverse(array);
string arr = new string(array);
Console.WriteLine("原来字符串是:" + str);
Console.WriteLine("字符串反向输出是:" + arr);

2:将“hello you world”反向输出“world you hello”

string str1 = "hello you world";
string[] str2 = str1.Split(' ');
Array.Reverse(str2);
string str3 = String.Join(" ", str2);
Console.WriteLine(str3);

3:Email中提取用户名和域名,如:[email protected]    用户名:ddy_dhj 域名:www.163.com

string str4 = "[email protected]";
string[] str5 = str4.Split('@');
if (str5.Length == 2)
{
    string a = str5[0];
    string b = str5[1];
    Console.WriteLine("用户名是:"+a);
    Console.WriteLine("域名是:" + b);
}
else
{
    Console.WriteLine("你输入的格式有问题");
}

4:字符串某个子串所在位置,如:hello,查ll在字符串中的位置。多种方式实现。提示:for, indexof

string str6 = "hello";
string str7 = "ll";
int num = str6.IndexOf(str7);
Console.WriteLine(num);

 5:用户输入的字符串中有多少大写字母、小写字母、数字、其他字符的个数。如:hello,  h: 1,e: 1,l: 2,o: 1

    Start:
    Console.Write("请输入字符串:");
    string input = Console.ReadLine();
    if (string.IsNullOrWhiteSpace(input))
    {
        Console.WriteLine("字符串不能为空或空白!请输入");
        goto Start;
    }
    Dictionary<char, int> charCount = GetCharCount(input);
    foreach (KeyValuePair<char, int> kvp in charCount)
    {
        Console.WriteLine($"{kvp.Key}:{kvp.Value}");
    }
    Console.ReadKey();
static Dictionary<char, int> GetCharCount(string s)
{
    Dictionary<char, int> dict = new Dictionary<char, int>();
    foreach (char c in s)
    {
        if (!char.IsWhiteSpace(c))  // char.IsWhiteSpace(c)判断字符是否是空格
        {
            // dict.ContainsKey(c)判断字典中是否包含某个key
            if (dict.ContainsKey(c))   //  dict[c]类似于strs[i]
                dict[c]++;
            else
                dict.Add(c, 1);
        }
    }
    return dict;
}

6:用户输入的字符串中有多少大写字母、小写字母、数字、其他字符的个数。

static void Main(string[] args)
{
    Start:
    Console.WriteLine("请输入一个字符串:");
    string input = Console.ReadLine();
    if (string.IsNullOrWhiteSpace(input))
    {
        Console.WriteLine("字符串不能为空或空白!请输入");
        goto Start;
    }

    // 连续定义多个变量
    int upperCase, lowerCase, digit, other;
    upperCase = lowerCase = digit = other = 0;

    foreach (char c in input)
    {
        if (char.IsUpper(c))
        {
            upperCase++;
        }
        else if (char.IsLower(c))
        {
            lowerCase++;
        }
        else if (char.IsDigit(c))
        {
            digit++;
        }
        else
        {
            other++;
        }
    }
    Console.WriteLine("大写字母数量:" + upperCase);
    Console.WriteLine("小写字母数量:" + lowerCase);
    Console.WriteLine("数字数量:" + digit);
    Console.WriteLine("其他字符数量:" + other);
}

7:让用户输入一句话判断有没有邪恶两个字,有的话用**替换。如:老赵是个邪恶的人==》老赵是个**的人

// aaa邪恶bbb====[aaa,bbb]====[aaa,邪恶,bbb]
// aaa邪恶bbb邪恶ccc====[aaa,bbb,ccc]====[aaa,邪恶,bbb,邪恶,ccc]
// aaa邪恶bbb邪恶ccc邪恶ddd====[aaa,bbb,ccc,ddd]====[aaa,邪恶,bbb,邪恶,ccc,邪恶,ddd]

// 1。 把输入的字符串拆分成字符串数组
string[] strs = input.Split(new string[] { "邪恶" }, StringSplitOptions.None);
// 2。准备数组
string[] newStrs = new string[2 * strs.Length - 1] ;
for (int i = 0; i < newStrs.Length; i = i + 2)
{
    newStrs[i] = strs[i / 2]; // strs[0,1,2,3]  i=0 i=2 i=4 i=6
    if (i < newStrs.Length - 1)
        newStrs[i + 1] = "邪恶";
}
// 3。循环数组
for (int j = 0; j < newStrs.Length; j++)
{
    Console.ForegroundColor = newStrs[j] == "邪恶" ? ConsoleColor.Red : ConsoleColor.White;
    Console.Write(newStrs[j]);
}

 8:把字符串数组转换成|连接的字符串。  5个

// 用来存储用户输入的字符串
string[] strings = new string[] { };

Start:
Console.Write("请输入字符串:");
string input = Console.ReadLine();
if (string.IsNullOrEmpty(input.Trim()))
{
    goto Start;
}
strings = strings.Append(input).ToArray() ;
if (strings.Length < 5)
{
    goto Start;
}
Console.WriteLine(string.Join("|", strings)); 

9:输入一个网址,判断顶级域名是什么类型,com为商业网站,net为网络服务机构网站,org为非营利组织网站,gov为政府网站,edu为教育网站;如:用户输入https://www.baidu.com,提示:顶级域名为:.com,这是一个商业网站

Start:
Console.Write("输入一个网址:");
string url = Console.ReadLine();
// 正则表达式校验合法性
Regex reg = new Regex("^https://([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)?$");
if (!reg.IsMatch(url))
{
    goto Start;
}
string[] strs = url.Split('.');
string lastStr = strs[strs.Length - 1];
switch (lastStr)
{
    case "com":
        Console.WriteLine("商业网站");
        break;
    case "org":
        Console.WriteLine("非营利组织网站");
        break;
    case "gov":
        Console.WriteLine("政府网站");
        break;
    default:
        Console.WriteLine("未知");
        break;
}

标签:Console,string,C#,hello,str,WriteLine,字符串,梳理
From: https://blog.csdn.net/yoyo21ktime/article/details/141090949

相关文章

  • BUG[系列]:imx6ull调试ADC功能。
    一、前言产品上有一个声控开关的需求,需要用到ADC,调试过程遇到了很多问题,特此记录下。(都可以写个小故事了)二、过程1.修改设备树板子上ADC功能默认是没有打开的,所以先改设备树。1.1BUG1:从doc文档直接复制代码,格式错误,编译和运行不会报错。描述:我直接从doc文档把ADC设备树代......
  • C#进阶-ASP.NET实现可以缩放和旋转的图片预览页
    本文详细介绍了如何在ASP.NETWebForms中实现一个功能丰富的图片预览页面。通过结合HTML、CSS和JavaScript,用户可以方便地对图片进行放大、缩小以及旋转操作。文章从页面的基本布局开始,逐步讲解了如何设置图片展示区、添加控制按钮、编写CSS样式以及实现JavaScript功能,最终展示了......
  • 《开发板 —— 交叉编译移植openssl、curl、mosquitto》
    1.移植openssl1.下载openssl,我这边下载的是openssl-3.3.1,下载后在linux中解压。2.配置编译安装(以下相关目录对应位置是随便写的,需要根据实际替换)#./configno-asm--prefix=/home/3520/software/openssh-server/package--cross-compile-prefix=arm-hisiv400-linux......
  • Umi4菜单栏将collapse按钮放置底部
    背景Umi@4中菜单栏的collapse按钮默认不在菜单栏底部,需求要将该按钮放回菜单底部并且改变默认icon 一开始做法直接修改组件样式,将其放置到菜单组件底部但是无法修改icon不想使用伪元素去重写icon,而且无法做到不同状态不同icon.ant-pro-sider-collapsed-button{......
  • 使用Django-Channels实现websocket通信+大模型对话
    前言最近一直在做这个大模型项目,我选了Django作为框架(现在很多大模型应用都用的FastAPI,不过我已经用习惯Django了)之前使用AspNetCore作为后端的时候,我先后尝试了BlazorServer,WebAPISSE(ServerSentEvent)等方案来实现大模型对话,目前好像SSE是用得比较多的,ChatGPT也......
  • iOS LaunchScreen.storyboard启动白屏(不显示)
    最近接手一个项目,启动页用LaunchScreen.storyboard需要修改下启动图发现启动图替换了居然不显示正常的解决方法很简单:需要要加载的图片放在工程的根目录下,不要放到Assets中。结束吐槽下storyboard这东西问题太多尽量还是少用吧。 storyboard设置的图片,如果这图片放在......
  • Activiti配置工作流结束过程
    在工作流结束过程中,类里面配置工作流结束时的过程实现方法:publicclassUpdateStatusimplementsJavaDelegate,ApplicationContextAware{ privatestaticApplicationContextapplicationContext; /** *采购审核结果处理 *@paramexecution */ @Override publ......
  • [Python] 通过pymongo连接docker中并开启了副本集的mongodb数据库
    需要指定directConnection=true&authSource=atp-test参数,,否则会报连接副本集超时。在PyMongo中,directConnection参数可以决定客户端是否直接连接到MongoDB服务器,而不是自动发现所有的副本集成员。当directConnection设置为true时,客户端将只连接到MongoDB连接字符......
  • Cesium实现飞行漫游
    通过一组记录相机的坐标与方向,实现平滑的漫游效果测试步骤:1、移动地球中心点,点击记录相机;或者手动填写坐标与方向进行记录2、点击初始化,载入相应的坐标信息3、点击漫游,镜头会平滑演进低配置云服务器,首次加载速度较慢,请耐心等候预览页面:http://www.daelui.com/#/tigerlai......
  • SSM基于的小区物业管理系统4c9w9 论坛 在线投诉
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容;报修信息,业主,车位信息,业主缴费,物业制度开题报告内容一、选题背景随着城市化进程的加快,小区物业管理工作日益复杂,传统的人工管理模式已难以满足......