基于日常工作中,常常用到字符串的相关方法,本文主要介绍了字符串的概念和常用方法,要看哪部分请私信我,我加上去。觉得不完善的地方也烦请私信我补充
首先了解下字符的定义:
字符指类字形单位或符号,包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号。字符是电子计算机或无线电通信中字母、数字、符号的统称,其是数据结构中最小的数据存取单位,通常由8个二进制位(一个字节)来表示一个字符。
字符是计算机中经常用到的二进制编码形式,也是计算机中最常用到的信息形式。根据计算机的编码方式不同,字符在不同编码方式的存储所占用字节数也不同。字符串,多个字符拼接物。
不变性:
一般情况下,我们将“一经赋值,其值就不能被更改”视为不变性,字符串的不变性就是指,字符串一经赋值,其值就不能被更改,当通过代码使字符串变量等于一个新的值的时候,堆上会出现一个新的字符串,然后,栈上的变量指向新的字符串,无法更改原来字符串的值
string str1 ="";
空字符串,定义一个string的引用并且分配内存空间string str2 = null;
定义一个string的引用,只在栈上分配了空间,在堆上没有分配,直接使用该变量会报空引用错误ToString()
,object为null会报空引用错误obj + ""
,字符串为null就把字符串转成""string str3 = string.Format("{0}, {1}", str, str2);
string.concat('11', 'aa')='11aa';
str == ""
,str == null
IsNullOrEmpty()
IsNullOrWhiteSpace()
Substring(int startIndex)
,从指定位置开始截取字符串Substring(int startIndex, int length)
,从指定的位置开始,截取给定长度的字符串Replace(Char first, Char second)
Replace(String firstString, String secondString)
Split(params char[] separator)
参数是根据字符数组的每个字符来划分具体从哪里分割,分割后该字符不归属于字符串数组
Join(String separator, params String[] value)
第一个参数是数组中每个字符间隔的自定义字符
第二个参数是要拼接的字符串数组
ToLower()
,把字符串转成小写、ToUpper()
,把字符串转成大写Trim()
,从当前字符串的开头和结尾删除所有空白字符后剩余的字符串TrimEnd()
,去掉字符串末尾出现的字符或字符数组TrimStart()
,去掉头部出现的字符或字符数组Contains()
,字符串是否包含指定的字符串IndexOf()
,返回指定字符串在字符串中的位置StartsWith()
,字符串头部是否包含指定字符串EndsWith()
,字符串末尾是否包含指定字符串Compare()
int res = string.Compare(string str1, string str2);
Equals()
bool < strName >.Equals(string str);
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] + ",";
}
}
}
}
}
以上就是今天要讲的内容,本文主要介绍了字符串的使用,要想灵活的使用上述方法,多多使用是必不可少的哦!