在 C# 中,可以使用字符数组来表示字符串,但是,更常见的做法是使用 string 关键字来声明一个字符串变量。string 关键字是 System.String 类的别名,表示由零个或者多个Unicode字符组成的不可变序列。可使用[ ]访问每个字符。
string welcomeText = "欢迎你";
welcomeText=”Hi";
重新赋值之前,内存首先会重新初始化一块区域,并且将值初始化位Hi。原来存放的内存区域不可修改。
string类型为引用类型,string变量本身存储在栈中,而变量所指向的值则存储在托管堆里面。
§7.1 字符串定义及初始化
创建String对象:
- 通过给 String 变量指定一个字符串
- 通过使用 String 类构造函数
- 通过使用字符串串联运算符( + )
- 通过检索属性或调用一个返回字符串的方法
- 通过格式化方法来转换一个值或对象为它的字符串表示形式
eg:
// #region << 版 本 注 释 >>
// /*----------------------------------------------------------------
// // Copyright (C) 2019 极客部落
// // 版权所有。
// //
// // 文件名:Program.cs
// // 文件功能描述:
// //
// //
// // 创建者:GeekTribe
// // 时间:14:05
// //----------------------------------------------------------------*/
// #endregion
using System;
namespace MSN
{
class MainClass
{
public static void Main(string[] args)
{
//字符串,字符串连接
string fname, lname;
fname = "Rowan";
lname = "Atkinson";
string fullname = fname + lname;
Console.WriteLine("Full Name: {0}", fullname);
//通过使用 string 构造函数
char[] letters = { 'H', 'e', 'l', 'l', 'o' };
string greetings = new string(letters);
Console.WriteLine("Greetings: {0}", greetings);
//方法返回字符串
string[] sarray = { "Hello", "From", "Tutorials", "Point" };
string message = String.Join(" ", sarray);
Console.WriteLine("Message: {0}", message);
//用于转化值的格式化方法
DateTime waiting = new DateTime(2012, 10, 10, 17, 58, 1);
string chat = String.Format("Message sent at {0:t} on {0:D}",
waiting);
Console.WriteLine("Message: {0}", chat);
}
}
}
/*输出结果*/
/*
Full Name: RowanAtkinson
Greetings: Hello
Message: Hello From Tutorials Point
Message: Message sent at 5:58 PM on Wednesday, October 10, 2012
*/
§7.2 String 类属性
eg:
// #region << 版 本 注 释 >>
// /*----------------------------------------------------------------
// // Copyright (C) 2019 极客部落
// // 版权所有。
// //
// // 文件名:Program.cs
// // 文件功能描述:
// //
// //
// // 创建者:GeekTribe
// // 时间:14:05
// //----------------------------------------------------------------*/
// #endregion
using System;
namespace MSN
{
class MainClass
{
public static void Main(string[] args)
{
string str = "This is test";
Console.WriteLine("str.length = {0}", str.Length);
}
}
}
§7.3 常用字符串操作函数
String 类有许多方法用于 string 对象的操作。如下所示图表提供了一些最常用的方法:
eg:
// #region << 版 本 注 释 >>
// /*----------------------------------------------------------------
// // Copyright (C) 2019 极客部落
// // 版权所有。
// //
// // 文件名:Program.cs
// // 文件功能描述:
// //
// //
// // 创建者:GeekTribe
// // 时间:14:05
// //----------------------------------------------------------------*/
// #endregion
using System;
namespace MSN
{
class MainClass
{
public static void Main(string[] args)
{
string str1 = "Hello, World!";
string str2 = "One World, One Dream!";
//字符串比较
if (String.Compare(str1, str2) == 0)
{
Console.WriteLine(str1 + " and " + str2 + " are equal.");
}
else {
Console.WriteLine(str1 + " and " + str2 + " are not equal.");
}
//字符串包含
if (str1.Contains("One"))
{
Console.WriteLine("The sequence 'test' was found.");
}
else {
Console.WriteLine("The sequence 'test' was not found.");
}
//字符串判等
if (String.Equals(str1, str2))
{
Console.WriteLine(str1 + " and " + str2 + " are equal.");
}
else
{
Console.WriteLine(str1 + " and " + str2 + " are not equal.");
}
//字符串格式化
string str_format = String.Format("Hello, {0}", "wendy");
Console.WriteLine("str_format = {0}", str_format);
//字符串判空
if (String.IsNullOrEmpty(str1))
{
Console.WriteLine("str1 is null or empty!");
}
else {
Console.WriteLine("str1 is not null or empty!");
}
//字符串分割
string[] strSplits = str1.Split('o');
foreach (string substr in strSplits)
{
Console.Write(substr);
Console.Write(" ");
}
Console.WriteLine("");
//字符串转字符数组
char[] str_chs = str1.ToCharArray();
foreach (char ch in str_chs) {
Console.WriteLine(ch);
}
//字符串空首尾白字符移除
string str3 = " #$$I am very happy!! ##$$ ";
Console.WriteLine("str.Trim() = " + str3.Trim());
}
}
}