认识String类别与String类别操作方式
2005-09-16 16:08
441 查看
在此系列文章中,将介绍一些撰写应用程序逻辑将常会使用到的类别,和这些类别提供的常用属性、方法。这回让我们来认识String类别与Sringr的操作方式。
在应用程序当中,常常需要依不同的情况处理字符串显示的样式。兴例来说,若应用程序需显示时间,你可能需要将DateTime型别的数据转换成字符串来输出;或者是将数值型别的资料,加上千分位与货币符号显示。
.NET Frameword的System命名下包含一个String类别,它提供许多的属性和方法,以认你透过程序来操作String型别的数据。常用的字符串操作方法见下表:
接着我们来以一个实例来探讨一些常用方法。
操作字符串的技术使用主控台应用程序来展示使用操作字符串的方法。namespace UseString
{
using System;
public class TestSting
{
[STAThread]
public static void Main(string[] args)
{
Console.WriteLine("String.Format(/"int={0},string={1},datetime={2}/",10,/"Vivid/",DateTime.Now)");
Console.WriteLine(String.Format("->int={0},string={1},datetime={2}",10,"Vivid",DateTime.Now));
Console.WriteLine();
Console.WriteLine("String.Format(/"Now ={0:yyyy-MM-dd}/",DateTime.Now)");
Console.WriteLine(String.Format("->Now ={0:yyyy-MM-dd}",DateTime.Now));
Console.WriteLine();
Console.WriteLine("String.Format(/"Now = {0:D}/",DateTime.Now)");
Console.WriteLine(String.Format("->Now = {0:D}",DateTime.Now));
Console.WriteLine();
Console.WriteLine("String.Format(/"My Number={0:000000.00}/",1000.00)");
Console.WriteLine(String.Format("->My Number={0:000000.00}",1000.00));
Console.WriteLine();
Console.WriteLine("String.Format(/"My Number={0:#######.00}/",1000.00)");
Console.WriteLine(String.Format("->My Number={0:#######.00}",1000.136));
Console.WriteLine();
Console.WriteLine("String.Format(/"My Number={0:C}/",1000.00)");
Console.WriteLine(String.Format("->My Number={0:C}",1000.00));
Console.WriteLine();
Console.WriteLine("String.Format(/"My Number={0:C3}/",1000.00)");
Console.WriteLine(String.Format("->My Number={0:C3}",1000.00));
Console.WriteLine();
Console.WriteLine("String.Format(/"My Number={0:N3}/",1000.00)");
Console.WriteLine(String.Format("->My Number={0:N3}",1000.00));
Console.WriteLine();
Console.WriteLine("->String.Compare(/"Vivid/",/"VIVID/",false)={0}",String.Compare("Vivid","VIVID",false));
Console.WriteLine("->String.Compare(/"Vivid/",/"VIVID/",true)={0}",String.Compare("Vivid","VIVID",true));
Console.WriteLine();
Console.WriteLine("string s=/"H/ello,V/ivid /";");
string s = "H/ello,V/ivid ";
Console.WriteLine("->s.IndexOf(/",/") = {0}",s.IndexOf(","));
Console.WriteLine("->s.LastIndexOf(/"//") = {0}",s.LastIndexOf("/"));
Console.WriteLine("->s.Replace(/" /",/"_/") = {0}",s.Replace(" ","_"));
Console.WriteLine("->s.Replace(/"//",/",/") = {0}",s.Replace("/",","));
Console.WriteLine("->s.Substring(3,4)= {0}",s.Substring(3,4));
Console.WriteLine();
Console.WriteLine("s = s.ToUpper()");
s = s.ToUpper();
Console.WriteLine("->s. = {0}",s);
Console.WriteLine();
Console.WriteLine("s = s.Replace(/"//",/",/"); ");
s = s.Replace("/",",");
Console.WriteLine("->s = {0}",s);
Console.WriteLine();
Console.WriteLine("string[] sa = s.Split(new char[] {','});");
string[] sa = s.Split(new char[] {','});
int nIndex = 0;
Console.WriteLine("foreach(string o in sa)");
foreach (string o in sa)
{
Console.WriteLine("->{0} = {1}",nIndex++,o);
}
}
}
}
UseString范例中撰写许多处理字符串的程序代码,分述于下。
使用Format方法
String类别的Format方法可以将字符串数据转换成不同的格式来显示。我们先来讲DateTime型别的格式化处理。 Console.WriteLine("String.Format(/"int={0},string={1},datetime={2}/",10,/"Vivid/",DateTime.Now)");
Console.WriteLine(String.Format("->int={0},string={1},datetime={2}",10,"Vivid",DateTime.Now));
Console.WriteLine程序中有三个内嵌在文字字符串中的参数字符串,分别为{0}、{1}、{2},用来格式化输出的文字符串。格式字符串中的参数是以0为基础开始计算的。{0}参数代表在跟随在结尾双引号之后的下一个自变量就是参数值出现的位置,也就是说[10]这个参数,在程序执行后,将会取代{0}所在的位置输出。依此类推,{1},代表第二个参数……。
程序中叫用String.Format方法分别将int型别的数值10、[Vivid]字符串,以及透过DateTim.Now属性取得的系统目前时间转换成字符串输出,执行的结果: String.Format("int={0},string={1},datetime={2}",10,"Vivid",DateTime.Now)
->int=10,string=Vivid,datetime=2005/9/16 下午 02:26:29
若想要进一步格式化时间的显示,可以在参数字符串后以下面的语法义输出的格式: {参数索引值:参数格式}如下面的程序代码,将日期的格式设定为yyyy-MM-dd: Console.WriteLine("String.Format(/"Now ={0:yyyy-MM-dd}/",DateTime.Now)");
Console.WriteLine(String.Format("->Now ={0:yyyy-MM-dd}",DateTime.Now));
这段程序输出的结果为: String.Format("Now ={0:yyyy-MM-dd}",DateTime.Now)
->Now =2005-09-06
注意,执行结果会依据你计算机控制台的日期设定而有所不同。格化字符串输出常用的参数:
[align=center]
[/align]
若要以长日期格式显示,可以使用D格式化字符: Console.WriteLine("String.Format(/"Now = {0:D}/",DateTime.Now)");
Console.WriteLine(String.Format("->Now = {0:D}",DateTime.Now));
这段程序执行的结果为,注意,执行结果会依据计算机的日期设定而有所不同: String.Format("Now = {0:D}",DateTime.Now)
->Now = 2005年9月16日
下面的程序片段展示将数值格式化下成小数以后两位,整数为6位数,不足补0:
Console.WriteLine("String.Format(/"My Number={0:000000.00}/",1000.00)");
Console.WriteLine(String.Format("->My Number={0:000000.00}",1000.00));
这段程序输出的结果为: String.Format("My Number = {0:000000.00}",1000.00)
->My Number = 001000.00
注意,执行结果会依据计算机的设定而有所不同,若数之的数值不补0,可以将格式化字符[0]改用[#]号取代,其余相关的数值常用格式化字符见下表:[align=center]
[/align]Compare方法若要比较两个字符串的大小,可以使用String类别的Compare方法。举例来说,范例中使用: Console.WriteLine("->String.Compare(/"Vivid/",/"VIVID/",false)={0}",String.Compare("Vivid","VIVID",false));
程序中Compare方法传入三个参数:第一个参数代表要比较的第一个字符串;第二个参数是要比较的第二个字符串;第三个参数代表字符串比较时要将大小写视为相同或不同。若为true,代表忽略大小写;false代表不忽略大小写。[align=center]
[/align]
IndexOf与LastIndexOf方法
如果想要搜索字符串是否包含特定的字符,可以使用IndexOf方法。这个方法将会回伟特定字符的索引值,如想要找寻[H/ello,V/ivid ]字符串中,第一次出现[,]符号的索引可以使用: Console.WriteLine("string s=/"H/ello,V/ivid /";");
string s = "H/ello,V/ivid ";
Console.WriteLine("->s.IndexOf(/",/") = {0}",s.IndexOf(","));
得到结果为: string s = "H/ello,V/ivid ";
->s.IndexOf(",") = 6
若找不到特定的字符,将回传-1;
若欲寻找的字符在字符串中重复出现多次,可以使用LastIndexOf方法找出最后一次出现的索引值,如欲找出[H/ello,V/ivid ]字符串最后一次出现[/]符号的索引值可以使用: Console.WriteLine("->s.LastIndexOf(/"//") = {0}",s.LastIndexOf("/"));
得到的结果为: ->s.LastIndexOf("/") = 8
Replace方法Replace方法可以用来将某一个Unicode字符取代成另一个unicode字符。查看上面代码的结果。
Substring方法你可以使用Substring萃取字符串部分数据。如想要萃取[H/ello,V/ivid ]字符串中的[llo,]4个这元,可以使用: Console.WriteLine("->s.Substring(3,4)= {0}",s.Substring(3,4));
[/b]ToUpper[/b]与[/b]ToLower[/b]方法
[/b]ToUpper方法可以转字符串的内容改成大写;而ToLower则用来将字符全部改成小写。
Split方法如果想要以[,]区隔,分别萃取出[Miles]、[vivid]、[Cherry]字符串然后将这三个字符串放到一个一维数组中,可以使用String类别的Split方法。举例来说,范例中的程序代码片段叫用Split方法将字符串s,[H,ello,V,ivid ]按逗号切割后,分别放到string型别的数组中: Console.WriteLine("string[] sa = s.Split(new char[] {','});");
string[] sa = s.Split(new char[] {','});
int nIndex = 0;
Console.WriteLine("foreach(string o in sa)");
foreach (string o in sa)
{
Console.WriteLine("->{0} = {1}",nIndex++,o);
}
Split方法可以传入一个char型别的数组,你可以在这个数组指明切割字符串的Unicode办识字符,范例为[,]号,你也可以使用不同的符号。程序执行后,数组的第一个元素内容将为[H],第二个元素为[ELLO],依此类推,程序执行的结果为: String[] sa = s.Split(new char[]{', '});
foreach (string o in sa)
->0 = H
->1 = ELLO
->2 = V
->3 = IVID
在应用程序当中,常常需要依不同的情况处理字符串显示的样式。兴例来说,若应用程序需显示时间,你可能需要将DateTime型别的数据转换成字符串来输出;或者是将数值型别的资料,加上千分位与货币符号显示。
.NET Frameword的System命名下包含一个String类别,它提供许多的属性和方法,以认你透过程序来操作String型别的数据。常用的字符串操作方法见下表:
方法 | 说明 |
Format | 格式化输出的字符串 |
Trim | 去除字符串前后的空白 |
TrimStart | 去除字符串前方的空白 |
TrimEnd | 去除字符串后方的空白 |
Compare | 比较字符串大小 |
IndexOf | 搜寻字符串中是否包含特定的字符 |
Replace | 将某一个unicode字符取代成另一个unicod字符 |
Substring | 萃取字符串的部份数据 |
ToUpper | 将字符串的内容改成大写 |
ToLower | 将字符全部改成小写 |
Split | 将字符串切割后,放到数组这中 |
操作字符串的技术使用主控台应用程序来展示使用操作字符串的方法。namespace UseString
{
using System;
public class TestSting
{
[STAThread]
public static void Main(string[] args)
{
Console.WriteLine("String.Format(/"int={0},string={1},datetime={2}/",10,/"Vivid/",DateTime.Now)");
Console.WriteLine(String.Format("->int={0},string={1},datetime={2}",10,"Vivid",DateTime.Now));
Console.WriteLine();
Console.WriteLine("String.Format(/"Now ={0:yyyy-MM-dd}/",DateTime.Now)");
Console.WriteLine(String.Format("->Now ={0:yyyy-MM-dd}",DateTime.Now));
Console.WriteLine();
Console.WriteLine("String.Format(/"Now = {0:D}/",DateTime.Now)");
Console.WriteLine(String.Format("->Now = {0:D}",DateTime.Now));
Console.WriteLine();
Console.WriteLine("String.Format(/"My Number={0:000000.00}/",1000.00)");
Console.WriteLine(String.Format("->My Number={0:000000.00}",1000.00));
Console.WriteLine();
Console.WriteLine("String.Format(/"My Number={0:#######.00}/",1000.00)");
Console.WriteLine(String.Format("->My Number={0:#######.00}",1000.136));
Console.WriteLine();
Console.WriteLine("String.Format(/"My Number={0:C}/",1000.00)");
Console.WriteLine(String.Format("->My Number={0:C}",1000.00));
Console.WriteLine();
Console.WriteLine("String.Format(/"My Number={0:C3}/",1000.00)");
Console.WriteLine(String.Format("->My Number={0:C3}",1000.00));
Console.WriteLine();
Console.WriteLine("String.Format(/"My Number={0:N3}/",1000.00)");
Console.WriteLine(String.Format("->My Number={0:N3}",1000.00));
Console.WriteLine();
Console.WriteLine("->String.Compare(/"Vivid/",/"VIVID/",false)={0}",String.Compare("Vivid","VIVID",false));
Console.WriteLine("->String.Compare(/"Vivid/",/"VIVID/",true)={0}",String.Compare("Vivid","VIVID",true));
Console.WriteLine();
Console.WriteLine("string s=/"H/ello,V/ivid /";");
string s = "H/ello,V/ivid ";
Console.WriteLine("->s.IndexOf(/",/") = {0}",s.IndexOf(","));
Console.WriteLine("->s.LastIndexOf(/"//") = {0}",s.LastIndexOf("/"));
Console.WriteLine("->s.Replace(/" /",/"_/") = {0}",s.Replace(" ","_"));
Console.WriteLine("->s.Replace(/"//",/",/") = {0}",s.Replace("/",","));
Console.WriteLine("->s.Substring(3,4)= {0}",s.Substring(3,4));
Console.WriteLine();
Console.WriteLine("s = s.ToUpper()");
s = s.ToUpper();
Console.WriteLine("->s. = {0}",s);
Console.WriteLine();
Console.WriteLine("s = s.Replace(/"//",/",/"); ");
s = s.Replace("/",",");
Console.WriteLine("->s = {0}",s);
Console.WriteLine();
Console.WriteLine("string[] sa = s.Split(new char[] {','});");
string[] sa = s.Split(new char[] {','});
int nIndex = 0;
Console.WriteLine("foreach(string o in sa)");
foreach (string o in sa)
{
Console.WriteLine("->{0} = {1}",nIndex++,o);
}
}
}
}
UseString范例中撰写许多处理字符串的程序代码,分述于下。
使用Format方法
String类别的Format方法可以将字符串数据转换成不同的格式来显示。我们先来讲DateTime型别的格式化处理。 Console.WriteLine("String.Format(/"int={0},string={1},datetime={2}/",10,/"Vivid/",DateTime.Now)");
Console.WriteLine(String.Format("->int={0},string={1},datetime={2}",10,"Vivid",DateTime.Now));
Console.WriteLine程序中有三个内嵌在文字字符串中的参数字符串,分别为{0}、{1}、{2},用来格式化输出的文字符串。格式字符串中的参数是以0为基础开始计算的。{0}参数代表在跟随在结尾双引号之后的下一个自变量就是参数值出现的位置,也就是说[10]这个参数,在程序执行后,将会取代{0}所在的位置输出。依此类推,{1},代表第二个参数……。
程序中叫用String.Format方法分别将int型别的数值10、[Vivid]字符串,以及透过DateTim.Now属性取得的系统目前时间转换成字符串输出,执行的结果: String.Format("int={0},string={1},datetime={2}",10,"Vivid",DateTime.Now)
->int=10,string=Vivid,datetime=2005/9/16 下午 02:26:29
若想要进一步格式化时间的显示,可以在参数字符串后以下面的语法义输出的格式: {参数索引值:参数格式}如下面的程序代码,将日期的格式设定为yyyy-MM-dd: Console.WriteLine("String.Format(/"Now ={0:yyyy-MM-dd}/",DateTime.Now)");
Console.WriteLine(String.Format("->Now ={0:yyyy-MM-dd}",DateTime.Now));
这段程序输出的结果为: String.Format("Now ={0:yyyy-MM-dd}",DateTime.Now)
->Now =2005-09-06
注意,执行结果会依据你计算机控制台的日期设定而有所不同。格化字符串输出常用的参数:
[align=center]
格式化字符 [/b] | 说明 [/b] |
d | 显示短日期格式 |
D | 显示长日期格式 |
t | 显示短时间格式 |
T | 显示长时间格式 |
f | 显示长日期和短时间组合的格式,以空白分隔 |
F | 显示长日期和长时间组合的格式 |
g | 显示短日期和短时间组合的格式,以空白分隔 |
G | 显示短日期和长时间组合的格式,以空白分隔 |
M或m | 显示月份 |
Y或y | 显示年份 |
若要以长日期格式显示,可以使用D格式化字符: Console.WriteLine("String.Format(/"Now = {0:D}/",DateTime.Now)");
Console.WriteLine(String.Format("->Now = {0:D}",DateTime.Now));
这段程序执行的结果为,注意,执行结果会依据计算机的日期设定而有所不同: String.Format("Now = {0:D}",DateTime.Now)
->Now = 2005年9月16日
下面的程序片段展示将数值格式化下成小数以后两位,整数为6位数,不足补0:
Console.WriteLine("String.Format(/"My Number={0:000000.00}/",1000.00)");
Console.WriteLine(String.Format("->My Number={0:000000.00}",1000.00));
这段程序输出的结果为: String.Format("My Number = {0:000000.00}",1000.00)
->My Number = 001000.00
注意,执行结果会依据计算机的设定而有所不同,若数之的数值不补0,可以将格式化字符[0]改用[#]号取代,其余相关的数值常用格式化字符见下表:[align=center]
数值格式化字符 [/b] | 说明 [/b] |
C与c | 货币格式 |
D与d | 科学符号格式 |
F与f | 符点数 |
G与g | 通用的数值格式 |
N与n | 数值格式 |
R与r | 双向格式,确保数值换成字符串后,再转换成数值能得到与转换前相同的值 |
X与x | 十六进制表示 |
程序中Compare方法传入三个参数:第一个参数代表要比较的第一个字符串;第二个参数是要比较的第二个字符串;第三个参数代表字符串比较时要将大小写视为相同或不同。若为true,代表忽略大小写;false代表不忽略大小写。[align=center]
回传值 | 代表含意 |
小于0的值 | 第一个字符串小于第二个字符串 |
0 | 两个字符串相等 |
大于0 | 第一个字符串大于第二个字符串 |
IndexOf与LastIndexOf方法
如果想要搜索字符串是否包含特定的字符,可以使用IndexOf方法。这个方法将会回伟特定字符的索引值,如想要找寻[H/ello,V/ivid ]字符串中,第一次出现[,]符号的索引可以使用: Console.WriteLine("string s=/"H/ello,V/ivid /";");
string s = "H/ello,V/ivid ";
Console.WriteLine("->s.IndexOf(/",/") = {0}",s.IndexOf(","));
得到结果为: string s = "H/ello,V/ivid ";
->s.IndexOf(",") = 6
若找不到特定的字符,将回传-1;
若欲寻找的字符在字符串中重复出现多次,可以使用LastIndexOf方法找出最后一次出现的索引值,如欲找出[H/ello,V/ivid ]字符串最后一次出现[/]符号的索引值可以使用: Console.WriteLine("->s.LastIndexOf(/"//") = {0}",s.LastIndexOf("/"));
得到的结果为: ->s.LastIndexOf("/") = 8
Replace方法Replace方法可以用来将某一个Unicode字符取代成另一个unicode字符。查看上面代码的结果。
Substring方法你可以使用Substring萃取字符串部分数据。如想要萃取[H/ello,V/ivid ]字符串中的[llo,]4个这元,可以使用: Console.WriteLine("->s.Substring(3,4)= {0}",s.Substring(3,4));
[/b]ToUpper[/b]与[/b]ToLower[/b]方法
[/b]ToUpper方法可以转字符串的内容改成大写;而ToLower则用来将字符全部改成小写。
Split方法如果想要以[,]区隔,分别萃取出[Miles]、[vivid]、[Cherry]字符串然后将这三个字符串放到一个一维数组中,可以使用String类别的Split方法。举例来说,范例中的程序代码片段叫用Split方法将字符串s,[H,ello,V,ivid ]按逗号切割后,分别放到string型别的数组中: Console.WriteLine("string[] sa = s.Split(new char[] {','});");
string[] sa = s.Split(new char[] {','});
int nIndex = 0;
Console.WriteLine("foreach(string o in sa)");
foreach (string o in sa)
{
Console.WriteLine("->{0} = {1}",nIndex++,o);
}
Split方法可以传入一个char型别的数组,你可以在这个数组指明切割字符串的Unicode办识字符,范例为[,]号,你也可以使用不同的符号。程序执行后,数组的第一个元素内容将为[H],第二个元素为[ELLO],依此类推,程序执行的结果为: String[] sa = s.Split(new char[]{', '});
foreach (string o in sa)
->0 = H
->1 = ELLO
->2 = V
->3 = IVID
相关文章推荐
- Yii框架操作数据库的几种方式与mysql_escape_string
- 一周乱弹(1,spring 获取 servletContext 方式 2,Calendar常用操作及与date,string的转换)
- 读取Java文件到byte数组的三种方式及Java文件操作大全(包括文件加密,String加密)
- Jersey使用总结一(jersey初步使用和简单post请求几种参数传递,String方式,不含对象操作)
- Unreal Engine 4 C++ FString操作的几种方式
- 使用Volley StringRequest Get的方式进行发票查询操作
- Yii框架操作数据库的几种方式与mysql_escape_string
- otl通过ODBC方式操作mysql, blob类型的处理
- iphone上swipe操作方式的代码实现
- 黑马程序员_java基础String的常见操作
- redis - String字符串操作
- MFC对话框中的编辑控件的7种操作方式
- Android:认识R类、findViewById方法查找组件、@string查找字符、@color查找颜色、@drawable查找图片、@dimen某个组件尺寸定义、项目引入资源国际化
- c# 字符串连接使用“+”和string.format格式化两种方式
- 关于程序中断i/o方式的进一步认识
- spring 事务操作 编程方式
- [Asp.net] C# 操作Excel的几种方式 优缺点比较
- 从头认识Spring-1.16 SpEl对集合的操作(2)-查询集合以及投影元素集合
- I/O方式操作GPIO
- 关于string类型的若干操作