C# 字符串

2023-11-07

C# 字符串操作

1.获取长度

C# 语言如果要获取字符串的长度,使用Length属性即可.

class Program
{
    static void Main()
    {
        string str = Console.ReadLine();
        Console.WriteLine("字符串的长度为:" + str.Length);
        Console.WriteLine("字符串中第一个字符为:" + str[0]);
        Console.WriteLine("字符串中最后一个字符为:" + str[str.Length - 1]);
    }
}

GetLength

格式

Length 表示取所有元素个数

GetLength() 表示取行数和列数

举例

数组array =

1,2,3

4,5,6

Length是6

GetLength(0) 是2

Get Length(1) 是3

 class Program1
    {
        static void Main(string[] args)
        {
            double[,] points = { { 90, 80 }, { 100, 89 }, { 88.5, 86 } };
            for (int i = 0; i < points.GetLength(0); i++)
            {
                Console.WriteLine( (i + 1));
                for (int j = 0; j < points.GetLength(1); j++)
                {
                    Console.Write(points[i, j] );
                }
                Console.WriteLine();
            }
        }
2.查找字符

在 C#)中字符串的查找方法有 IndexOf、LastlndexOf,IndexOf 方法得到的是指定字符串在原字符串中第一次出现的位置,LastlndexOf 方法得到的是指定字符串在查找的字符串中最后一次出现的位置。

需要注意的是字符串中的每个字符的位置是从 0 开始的。

无论是哪个方法,只要指定的字符串在查找的字符串中不存在,结果都为 -1。

如果要判断字符串中是否仅含有一个指定的字符串,则需要将 IndexOf 和 LastlndexOf 方法一起使用,只要通过这两个方法得到的字符串出现的位置是同一个即可。

class Program
{
    static void Main()
    {
        string str = Console.ReadLine();
        if (str.IndexOf("@") != -1)
        {
            Console.WriteLine("字符串中含有@,其出现的位置是{0}", str.IndexOf("@") + 1);
        }
        else
        {
            Console.WriteLine("字符串中不含有@");
        }
    }
}
3.字符串替换

字符串的替换操作是指将字符串中指定的字符串替换成新字符串。

在 C# 中替换字符串的方法是Replace方法。

class Program
{
    static void Main(string[] args)
    {
        string str = Console.ReadLine();
        if (str.IndexOf(",") != -1)
        {
            str = str.Replace(",", "_");
        }
        Console.WriteLine("替换后的字符串为:" + str);
    }
}
4.字符串截取

在 C# 语言中截取字符串的方法是 Substring 方法,在使用该方法时有以下两种方法传递参数。

Substring(指定位置); //从字符串中的指定位置开始截取到字符串结束
Substring(指定位置, 截取的字符的个数); //从字符串中的指定位置开始截取指定字符个数的字符
class Program
{
    static void Main(string[] args)
    {
        string str = Console.ReadLine();
        int firstIndex = str.IndexOf("@");
        int lastIndex = str.LastIndexOf("@");
        if(firstIndex != -1 && firstIndex == lastIndex)
        {
            str = str.Substring(0, firstIndex);
        }
        Console.WriteLine("邮箱中的用户名是:" + str);
    }
}
5.字符串插入

在一个字符串中可以在指定位置插入另一个字符串,在 C#中插入字符串使用的方法是 Insert 方法。

在 Insert 方法中需要两个参数,一个是字符串插入的位置,一个是字符串。

class Program
{
    static void Main(string[] args)
    {
        string str = Console.ReadLine();
        str = str.Insert(1, "@@@");
        Console.WriteLine("新字符串为:" + str);
    }
}

C# 类型转换

C# 允许使用两种转换方式:隐式类型转换和显式类型转换。

1.隐式类型转换

这些转换是 C# 默认的以安全方式进行的转换,不会导致数据丢失。例如,从小的整数类型转换为大的整数类型,从派生类转换为基类。

将存储范围小的数据类型直接转换成存储范围大的数据类型。

int a = 66;
double b = a;
float f = 33.33f;
double c = f;
2.显式类型转换

显式类型转换,即强制类型转换。显式转换需要强制转换运算符,而且强制转换会造成数据丢失。

强制类型转换主要用于将存储范围大的数据类型转换成存储范围小的

double d = 12314.1231;
int k =(int) d;

C# Convert方法和Parse 方法

1.Parse

C#Parse 方法用于将字符串类型转换成任意类型

数据类型 变量二数据类型.Parse(字符串类型的值);

string str;
int num = int.Parse(str);
2.Convert

C# Convert 方法是数据类型转换中最灵活的方法,它能够将任意数据类型的值转换成任意数据类型,前提是不要超出指定数据类型的范围。

数据类型 变量名 = convert.To数据类型(变量名);
在这里插入图片描述

static void Main()
{
    float a = 123.456;
    int b;
    string str;
    b = Convert.ToInt32(a);
    str = Convert.ToString(a);
    Console.WriteLine("{0}{1}", b, str);
}

C# 装箱和拆箱

C#语言中数据类型分为值类型和引用类型。将值类型装换为引用类型称为装箱,将引用类型转换成值类型称为拆箱。

//装箱
int a = 1;
string str = a.ToString();
//拆箱
a = int.Parse(str);

示例:通过允许值类型的任意值与Object类型的值相互转换,将值类型与引用类型链接起来;

//装箱
int val = 100;
object obj = val;
//拆箱
int val = 100;
object obj = val;
int num = (int) obj;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 字符串 的相关文章

  • 具有相同参数类型但具有不同常量限定符的 std::vector 的转换

    问题很简单 静态转换 或其他一些转换 通常是安全的 std vector lt Foo gt to std vector lt const Foo gt 就二进制而言 我不明白为什么本机类型会有所不同 毕竟const是一种语言约束 不应影响
  • 结构体如何存储在内存中?

    我有一个struct iof header在我的代码中 我确定它的宽度是 24 字节 我执行 sizeof iof header 它返回 32 字节宽 问题1为什么是 32 字节宽而不是 24 字节宽 问题2包括其成员在内 结构体如何存储在
  • fopen_s 怎么会比 fopen 更安全呢?

    我正在处理遗留代码Windows平台 当我编译代码时VS2013 它给出以下警告 错误 C4996 fopen 该函数或变量可能不安全 考虑使用fopen s反而 要禁用弃用 请使用 CRT SECURE NO WARNINGS 详情请参见
  • STL之类的容器typedef快捷方式?

    STL 容器的常见模式是这样的 map
  • 警告 C4800:“int”:强制值为 bool“true”或“false”(性能警告)

    我的代码中有这个问题 bool CBase isNumber return id MID NUMBER bool CBase isVar return id MID VARIABLE bool CBase isSymbol return i
  • 为什么子函数不销毁GtkWindow?

    这是我的代码 void window first void enter window2 GtkWidget w gpointer data void quit GtkWidget w gpointer data void quit int
  • ASP.NET - 在 RenderContent 调用中将事件处理程序添加到 Repeater 内的 LinkBut​​ton

    我有一个加载自定义用户控件的 Sharepoint WebPart 用户控件包含一个 Repeater 而 Repeater 又包含多个 LinkBut ton 在 Web 部件的 RenderContent 调用中 我有一些用于添加事件处
  • 如何在C中同时运行两个子进程?

    所以我开始学习并发编程 但由于某种原因我什至无法掌握基础知识 我有一个名为 fork c 的文件 其中包含一个 main 方法 在此方法中 我将 main 分叉两次 分别进入子进程 1 和 2 在孩子 1 中 我打印了字符 A 50 次 在
  • 将 dataGridView 中选定的行作为对象检索

    我有一堂这样的课 public partial class AdressBokPerson public long Session get set public string F rnamn get set public string Ef
  • 无法加载程序集问题

    我收到以下错误 无法加载程序集 错误详细信息 System BadImageFormatException 无法加载文件或程序集 文件 或其依赖项之一 该程序集是由比当前加载的运行时更新的运行时构建的 无法加载 该程序集是使用 Net Fr
  • Linq 合并列表

    我的课 public class Foo public int A get set public List
  • 控制台应用程序中使用 Unicode 字符的 _tprintf

    我正在从 Unicode 构建的控制台应用程序 使用 C 和 Visual Studio 2008 执行这个简单的输出 此代码旨在在 Windows 上运行 tprintf L Some sample string n 一切正常 但是如果我
  • .NET 5 EF Core SaveChangesAsync 因错误而挂起

    尽管这个问题有很多结果 但没有一个真正给我明确的答案 每次我尝试通过 AddAsync 和 SaveChangesAsync 方法插入错误数据 例如重复的主键 时 我都会看到以下日志 执行 DbCommand 失败 15 毫秒 我还在 SQ
  • 如何将STL容器数据转储到gdb中?

    我无法在 gdb 中转储 STL 无序映射容器值 变量类型是 std unordered map var 我的 gdb 版本 7 7 1 GDB配置 configure host x86 64 linux gnu target x86 64
  • 您对“大规模 C++ 软件设计”的看法 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 正在阅读亚马逊评论 https rads stackoverflow com amzn click com 0201633620 and ACC
  • 在 C# 中使用命名空间别名有什么好处? [复制]

    这个问题在这里已经有答案了 使用命名空间别名有什么好处 仅仅是为了简化编码吗 仅当与类发生冲突时我才使用名称空间别名 对我来说 这根本没有简化 我的意见是 如果没有必要 就不要使用
  • Gremlin.net 文本包含等效项

    我正在使用 Gremlin net 库连接到 janus 图形服务器 我使用 cassandra 和弹性搜索进行数据存储和索引 在我使用的 gremlin 语言和 gremlin 控制台中文本包含在属性的文本中进行搜索 我正在使用混合索引
  • 卸载程序

    我正在尝试使用此代码卸载程序 但它似乎不起作用 我尝试过其他答案 但似乎也不起作用 有人可以帮助我吗 我正在尝试按给定名称 displayName 卸载该程序 例如 我给出 displayName Appname 那么此代码应该从我的计算机
  • 如何在 C 中创建最低有效位设置为 1 的掩码

    这个功能如何运作 最低有效 n 位设置为 1 的掩码 Example n 6 gt 0x2F n 17 gt 0x1FFFF 我根本不明白这些 尤其是 n 6 gt 0x2F 另外 什么是面膜 通常的方法是采取1 并将其左移n位 这会给你类
  • 在windows + opengl中选择图形设备

    我知道如何使用 openGL 打开窗口 使用 Win32 或其他工具包 但是当系统有2块显卡时 如何选择要渲染的图形设备 我的编程语言是 C 我专注于 Windows 但任何示例都将受到欢迎 编辑 也许更好地解释我的问题是个好主意 以便添加

随机推荐

  • 开发日记2021-17、20周

    2021 4 19 温习了下观察者模式 学习了状态模式 但是感觉状态模式不是太能把握透彻 代码结构不太一样 理解起来有些偏差 写着写着就陷入到了沉思中 总会忘记要把想法记下来 这里就是草稿就是思路演练场 这里写下的东西不需要完美 只要记录下
  • 【Clion+CubeMX开发STM32】(二)创建自己的工程

    目录 新建工程 修改芯片型号 添加自己的文件 将自己的文件添加Cmake项目 修改CMakeLists template txt 烧录程序 编写 cfg文件 编写 cfg文件 新建工程 打开你的Clion 点击新建工程 在左侧找到STM32
  • 期货开户寻找交易确定性

    1 寻找确定性 都说金融是概率游戏 大家都是说胜率有多少 没有谁敢说行情能100 确定 但傅海棠却提出 在特定情况下 能找到100 确定的行情 他的这个观点也一度引起了广泛的争议 傅海棠说 物极必反 必 是100 不是概率 关键是找到那个
  • Unity3D之sprite动画(Animation)的制作

    实例说明 忍者跑酷的player动画制作 这些都是用Sprite做的动画 在prioject面板里的一组sprite里面点击 之后看属性面板的Sprite Editor对这组Sprite进行编辑 下面先编辑一个idle状态的动画 首先选择第
  • 贝叶斯推断及其互联网应用(一)

    贝叶斯推断及其互联网应用 一 投递人 itwriter 发布于 2011 08 25 14 03 评论 6 有1981人阅读 原文链接 收藏 一年前的这个时候 我正在翻译Paul Graham的 黑客与画家 那本书大部分谈的是技术哲学 但是
  • 二、水平管道中CO2气液两相的流量研究

    水平管道中CO2气液两相的流量研究 3 1 引言 在CCS系统的CO2管道运输过程中 由于传输距离较长且受到管道周围环境的影响 管道中的CO2不可避免的会发生相态的改变 产生气液两相CO2流 因此 本研究基于多传感器系统的测量方法 对水平管
  • android hwcomposer 抓取各个显示图层的raw显示数据

    amlogic 平台 void fill color void vaddr int cnt unsigned int p data p data unsigned int vaddr for int i 0x00 i lt 256 1920
  • 服务器---session理论知识

    1 session理论知识 1 1 session何时创建 1 2 session何时销毁 1 session何时创建 Session 机制 session机制是一种服务器端的机制 用来在无状态的HTTP协议下越过多个请求页面来维持状态和识
  • Mac上Pycharm中安装anaconda的pandas和numpy的方法

    1 点击PyCharm菜单栏下的Preferences 2 选择需要安装的project中的Project Interpreter选项 3 选择一个python版本 如红框1 下面会列出已经安装了的Package 这时点击红框2的anaco
  • 【Mac】Mac下SSH免密登录localhost

    1 背景 问题起因参考 mac下ssh 报错 localhost ssh connect to host localhost port 22 Connection refused 为了在MAC上搭建Hadoop standalone 需要配
  • gtx1050ti最稳定的驱动_更新PC电脑的蓝牙驱动方法

    有时候我们需要更新自己的电脑蓝牙版本使我们在特定环境下更好的使用 下面就来讲讲怎么更新蓝牙版本 一 首先我们要查看自己电脑的蓝牙版本 1 右键点击左下方的开始菜单 找到设备管理器 M 2 点开设备管理器 找到蓝牙并右键属性 并查看驱动程序
  • Vue3 中的 @Options,是做什么的?

    Vue3 中的 Options 是做什么的 Options 是个啥 为什么我的项目中会有 Options 或 Component 啥是 类语法风格的组件 Class Style Component Vue Class Component 更
  • 【Hello mysql】 mysql的复合查询 (重点)

    Mysql专栏 Mysql 本篇博客简介 介绍mysql的复合查询 mysql的复合查询 基本查询回顾 查询工资高于500或岗位为MANAGER的雇员 同时还要满足他们的姓名首字母为大写的J 按照部门号升序而雇员的工资降序排序 使用年薪进行
  • MFC之底层窗口实现01(包括windows窗口消息机制)

    1 MFC需要了解的相关概念 1 SDK和API SDK 软件开发工具包 Software Development Kit 一般都是一些被软件工程师用于为特定的软件包 软件框架 硬件平台 操作系统等建立应用软件的开发工具的集合 也称第三方工
  • 【嵌入式学习-C语言篇】 while & for 的使用

    while for 的使用 while for 的常用场景 自动售货机 判断是否存在待处理订单 智能音箱 打印当前搜索到的wifi热点信息 自动售货机 计算当前所有订单的金额 有收入有退款 代码 include
  • Android解析含有键值是汉字的json串

    Android解析含有键值是汉字的json串 今天在接入百度orc识别身份证的功能时 请求成功后 百度返回的json中发现有的键值是中文 我之前没有遇到过这种情况 依然用在之前项目封装的fastjson正常解析json串 结果解析失败 刚开
  • 性能测试二八原则,响应时间2/5/8原则

    性能测试二八原则 响应时间2 5 8原则 所谓响应时间的 2 5 8原则 简单说 就是 当用户能够在2秒以内得到响应时 会感觉系统的响应很快 当用户在2 5秒之间得到响应时 会感觉系统的响应速度还可以 当用户在5 8秒以内得到响应时 会感觉
  • Java视频学习笔记-19-设计模式

    面向对象思想设计原则 单一职责原则 即高内聚低耦合 每个类应该只有一个职责 对外只能提供一种功能 而引起类变化的原因应该只有一个 功能细化 在设计模式中 所有的设计模式都遵循这一原则 开闭原则 对类的改动是通过增加代码进行的 而不是修改现有
  • zlib库使用简单讲解

    1 zlib库简介 zlib 是通用的压缩库 提供了一套 in memory 压缩和解压函数 并能检测解压出来的数据的完整性 integrity zlib 也支持读写 gzip gz 格式的文件 源码网址 http www gzip org
  • C# 字符串

    文章目录 C 字符串操作 1 获取长度 2 查找字符 3 字符串替换 4 字符串截取 5 字符串插入 C 类型转换 1 隐式类型转换 2 显式类型转换 C Convert方法和Parse 方法 1 Parse 2 Convert C 装箱和