文章目录

  • 前言
  • 一、概念
  • 二、关键性质
  • 三、String == null和""的区别
  • 四、常用方法
    • 一、object to string
    • 二、字符串拼接
    • 三、判断字符串是否为””、null
    • 四、Substring(),截取字符串
    • 五、Replace(),替换字符串
    • 六、Split(),字符串转成字符串数组
    • 七、Join(),字符串数组转字符串
    • 八、ToLower() and ToUpper(),大小写转换
    • 九、Trim() and TrimEnd() and TrimStart(),去掉字符串前后指定的字符或字符数组
    • 十、判断字符串是否包含指定字符串
    • 十一、字符串比较
    • 十二、字符串复制
    • 十三、字符串插入
  • 五、字符串分解案列
  • 六、总结

前言

基于日常工作中,常常用到字符串的相关方法,本文主要介绍了字符串的概念和常用方法


一、概念

首先了解下字符的定义:
字符指类字形单位或符号,包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号。字符是电子计算机或无线电通信中字母、数字、符号的统称,其是数据结构中最小的数据存取单位,通常由8个二进制位(一个字节)来表示一个字符。

字符是计算机中经常用到的二进制编码形式,也是计算机中最常用到的信息形式。根据计算机的编码方式不同,字符在不同编码方式的存储所占用字节数也不同。字符串,多个字符拼接物。


二、关键性质

不变性:
一般情况下,我们将“一经赋值,其值就不能被更改”视为不变性,字符串的不变性就是指,字符串一经赋值,其值就不能被更改,当通过代码使字符串变量等于一个新的值的时候,堆上会出现一个新的字符串,然后,栈上的变量指向新的字符串,无法更改原来字符串的值


三、String == null和""的区别

  • string str1 =""; 空字符串,定义一个string的引用并且分配内存空间
  • string str2 = null; 定义一个string的引用,只在栈上分配了空间,在堆上没有分配,直接使用该变量会报空引用错误

四、常用方法

一、object to string

  1. ToString(),object为null会报空引用错误
  2. obj + "",字符串为null就把字符串转成""

二、字符串拼接

  1. +
  2. string.Format():string str3 = string.Format("{0}, {1}", str, str2);
  3. string.concat():string.concat('11', 'aa')='11aa';

三、判断字符串是否为””、null

  1. str == ""str == null
  2. IsNullOrEmpty()
  3. IsNullOrWhiteSpace()
    基本定义用法同上IsNullOrEmpty(),但是IsNullOrEmpty() 标注了 “Performance critical to inline across NGen image boundaries”,所以推荐用IsNullOrWhiteSpace()

四、Substring(),截取字符串

  1. Substring(int startIndex),从指定位置开始截取字符串
  2. Substring(int startIndex, int length),从指定的位置开始,截取给定长度的字符串

五、Replace(),替换字符串

  1. Replace(Char first, Char second)
  2. Replace(String firstString, String secondString)
    用新字符串替换旧字符串,字符也可以
    第一个参数是原字符,第二个参数是替换的字符

六、Split(),字符串转成字符串数组

Split(params char[] separator)
参数是根据字符数组的每个字符来划分具体从哪里分割,分割后该字符不归属于字符串数组

七、Join(),字符串数组转字符串

Join(String separator, params String[] value)
第一个参数是数组中每个字符间隔的自定义字符
第二个参数是要拼接的字符串数组

八、ToLower() and ToUpper(),大小写转换

  1. ToLower(),把字符串转成小写、
  2. ToUpper(),把字符串转成大写

九、Trim() and TrimEnd() and TrimStart(),去掉字符串前后指定的字符或字符数组

  1. Trim(),从当前字符串的开头和结尾删除所有空白字符后剩余的字符串
  2. TrimEnd(),去掉字符串末尾出现的字符或字符数组
  3. TrimStart(),去掉头部出现的字符或字符数组

十、判断字符串是否包含指定字符串

  1. Contains(),字符串是否包含指定的字符串
  2. IndexOf(),返回指定字符串在字符串中的位置
  3. StartsWith(),字符串头部是否包含指定字符串
  4. EndsWith(),字符串末尾是否包含指定字符串

十一、字符串比较

  1. Compare()
    int res = string.Compare(string str1, string str2);
    按照字典排序比较,当str1 > str2时,返回1;当str1 = str2时,返回0;当str1 < str2时,返回 - 1
  2. Equals()
    bool < strName >.Equals(string str);
    比较如果相等就返回true,否则返回false

十二、字符串复制

Copy(s, I, I) 从字符串s中截取第I个字符开始后的长度为l的子串。
如:copy('abdag', 2, 3) ='bda'

十三、字符串插入

Insert(s1, s2, I) 把s1插入到s2的第I个位置
如:s:= abc; insert('12', s, 2); 结果s:='a12bc'


五、字符串分解案列

需求:按照JSON文件对比机器命令id返回结果,把机器错误信息转义成中文,即数组里的数字,难点,数组里包含了个小数组,开头结尾不要
错误格式如:
0,{[[-2,3],[],[0],[],[],[21120],[21120]]},GetErrorID();
0,{[[85],[],[],[],[],[]]},GetErrorID();
但是没有错时,返回0,{[[],[],[],[],[],[]]},GetErrorID(); ,
会出现少掉前面那个数组,第一个数组为一类,其余为另一类

private string CauseShow(string id){try{string[] s1 = id.Split(new char[] { '{', '}' }, StringSplitOptions.None);string[] s2 = s1[1].Split(new char[] { ',' }, StringSplitOptions.None);int Length = s2.Length;string controllerStr = null;string EndStr = null;if (Length == 6){for (int i = Length - 1; i > Length - 6; i--){if ((i == Length - 1 && s2[Length - 1].Length > 3) || (s2[i].Length > 2 && !(i == Length - 1))){string[] s = s2[i].Split(new char[] { '[', ']' }, StringSplitOptions.None);string ss = null;for (int j = 0; j < alarm_servo.Length; j++){if (Convert.ToInt32(s[1].ToString()) == alarm_servo[j].id){ss = alarm_servo[j].Zh_CN.description;}}s2[i] = ss;}if (s2[i].Length == 2 || (s2[i].Length == 3 && i == Length - 1)){s2[i] = "";}if (i <= 0){break;}}string[] s3 = s1[1].Split(new char[] { ',', '[', ']' }, StringSplitOptions.None);ArrayList s3List = new ArrayList();for (int i = 2; i < s3.Length - 2; i++){if (s3[i] != ""){s3List.Add(s3[i]);}else{break;}}if (s3List.Count > 0){for (int i = 0; i < s3List.Count; i++){for (int j = 0; j < alarm_controller.Length; j++){if (Convert.ToInt32(s3List[i].ToString()) == alarm_controller[j].id){controllerStr += alarm_controller[j].Zh_CN.description;if (!(i == s3List.Count - 1)){controllerStr += ",";}}}}}for (int i = Length - 1; i > Length - 5; i--){if (s2[i] == ""){continue;}else{EndStr += s2[i] + ",";}}}else{for (int i = Length - 1; i > Length - 6; i--){if ((i == Length - 1 && s2[Length - 1].Length > 3) || (s2[i].Length > 2 && !(i == Length - 1))){string[] s = s2[i].Split(new char[] { '[', ']' }, StringSplitOptions.None);string ss = null;for (int j = 0; j < alarm_servo.Length; j++){if (Convert.ToInt32(s[1].ToString()) == alarm_servo[j].id){ss = alarm_servo[j].Zh_CN.description;}}s2[i] = ss;}if (s2[i].Length == 2 || (s2[i].Length == 3 && i == Length - 1)){s2[i] = "";}if (i <= 0){break;}}string[] s3 = s1[1].Split(new char[] { ',', '[', ']' }, StringSplitOptions.None);ArrayList s3List = new ArrayList();for (int i = 2; i < s3.Length - 2; i++){if (s3[i] != ""){s3List.Add(s3[i]);}else{break;}}if (s3List.Count > 0){for (int i = 0; i < s3List.Count; i++){for (int j = 0; j < alarm_controller.Length; j++){if (Convert.ToInt32(s3List[i].ToString()) == alarm_controller[j].id){controllerStr += alarm_controller[j].Zh_CN.description;if (!(i == s3List.Count - 1)){controllerStr += ",";}}}}}for (int i = Length - 1; i > Length - 5; i--){if (s2[i] == ""){continue;}else{EndStr += s2[i] + ",";}}}}}

六、总结

以上就是今天要讲的内容,本文主要介绍了字符串的使用,要想灵活的使用上述方法,多多使用是必不可少的哦!

字符串的定义和常用方法相关推荐

  1. java的字符定义_Java字符串定义及常用方法

    String.StringBuffer和StringBuilder String修饰的是不可变的字符串,而StringBuffer和StringBuilder类的对象是可以被修改的. StringBu ...

  2. string字符串内容倒叙_Java实现字符串倒序输出的常用方法小结

    本文实例汇总了Java实现字符串倒序输出的常用方法,分享给大家供大家参考.具体方法如下: 1. 最容易想到的估计就是利用String类的toCharArray(),再倒序输出数组的方法了. 实现代码如 ...

  3. JavaScript数组的定义及常用方法

    目录 前言 一.数组是什么? 二.数组的定义方式 1.字面量方法 2.构造函数创建 三.数组常用方法 1.push:在数组最后一位添加方法,可添加多个 2.pop:把数组的最后一位剪切(传参无效) 3 ...

  4. String的定义及常用方法

    原文链接:String的定义及常用方法 文章目录 定义字符串的三种方式 方式一 方式二 方式三 常见的String方法 1.严格大小写.equals() 2.忽略大小写.equalsIgnoreCas ...

  5. 【Groovy】字符串 ( 字符串类型变量定义 | 字符类型变量定义 )

    文章目录 一.字符串类型变量 二.字符类型变量 三.完整代码示例 一.字符串类型变量 使用 def 关键字声明 Groovy 中的 变量 : 声明字符串 , 可以使用以下方式 : // 字符串 // ...

  6. 图说:为什么Java中的字符串被定义为不可变的

    转载自 图说:为什么Java中的字符串被定义为不可变的 字符串,想必大家最熟悉不过了,通常我们在代码中有几种方式可以创建字符串,比如:String s = "Hollis";这时, ...

  7. python定义字符串_Python定义字符串、循环

    定义字符串: "" ''定义的字符串里面有单引号就用双引号 否则反之 如果字符串中单引号双引号都有就用 三引号 '''let's go"小白" ''' 三引号也 ...

  8. 字符串的定义与赋值及初始化

    字符串的定义与赋值及初始化 C语言的运算符根本无法操作字符串.在C语言中把字符串当作数组来处理,因此,对字符串的限制方式和对数组的一样,特别是,它们都不能用C语言的运算符进行复制和比较操作. 怎么给这 ...

  9. 2022-11-30:小红拿到了一个仅由r、e、d组成的字符串 她定义一个字符e为“好e“ : 当且仅当这个e字符和r、d相邻 例如“reeder“只有一个“好e“,前两个e都不是“好e“,只有第三个

    2022-11-30:小红拿到了一个仅由r.e.d组成的字符串 她定义一个字符e为"好e" : 当且仅当这个e字符和r.d相邻 例如"reeder"只有一个&q ...

最新文章

  1. R语言ggpattern填充各种色彩、形状、纹理、图片到ggplot2可视化图像中示例
  2. 深入理解js的执行机制
  3. 再谈MySQL JSON数据类型
  4. 最新版本mysql jdbc驱动包获取表定义信息空指针异常处理方法
  5. javascript中创建对象的几种方式
  6. PAT甲级题目翻译+答案 AcWing(高精度)
  7. Orleans解决并发之痛(三):集群
  8. (c语言)近似计算π
  9. mysql数据库事件不执行_【数据库】mysql查看事件是否执行
  10. Android蓝牙开发的一点总结
  11. Officescan防毒墙安装部署手册
  12. 系统账号自动退出时长哪里设置
  13. 网络“投毒”系列报告:全国多省软件升级劫持攻击事件数据分析
  14. flash builder4.6 集成svn1.8报错
  15. 求出数组最大值的方法
  16. 应用MySQL数据库的实现本地BLAST及BLAST2GO
  17. MAC打开outlook提示”正在修复 Main Profile“
  18. A - 五军之战 (sdut擂台赛)
  19. 【Matlab】数据插值
  20. 全球最大同性交友平台骚操作

热门文章

  1. 统计分析基础 (一) 数据统计与图表
  2. 毕业一年 写给自己的警戒书
  3. excel表中多个单元格文本合并到同一个单元格的4种公式使用方法介绍
  4. Mysql外键的使用
  5. 把脉全球设计创造力最新趋势!蒙纳字体发布《2022全球字体趋势报告》
  6. P5516 [MtOI2019] 数学期望 + 高斯消元
  7. Unhandled exception 0xC0000005:Access Violation
  8. LINUX 下制作 WINDOWS U盘启动盘
  9. VTK系列教程六:多平面重建
  10. AJAX入门——不加载整个页面,与服务器交换数据并更新部分网页内容