前言:記得我們老師說過一句話,對字符串的學習程度就是當別人打你一拳你知道痛的情況,所以字符串的處理我們必須學的差不多,這幾篇博客完全是我的學習過程中記錄的筆記,在這里分享一下讓很多剛開始學習.net編程的人能夠很快的學會怎么處理字符串
- string的構造方法
(1) String和string意思一樣,只是String是.net FrameWork提供的,而string是C#語言提供的
(2)字符串是不可變的
class Program
{
static void Main(string[] args)
{
string str = "123456";
(*)string s1 = new string(new char[] { '我', '是', '韓', '迎', '龍' }); //輸出字符串
(*)string s2 = new string('0', 10); //輸出10個0
Console.WriteLine(s1);
Console.WriteLine(s2);
Console.WriteLine(5.ToString("00000")); //前面補0
string str1 = "韓閃閃";
char[] chs = str1.ToCharArray();
for (int i = 0; i < chs.Length; i++)
{
if (chs[i] == '閃')
{
chs[i] = '珊';
}
}
str1 = new string(chs);
Console.WriteLine(str1);
Console.ReadKey();
}
}
- 字符串的方法和常量
(1) 字符串賦初值的三種方法
string str = "";
string str1 = string.Empty;
string str2 = null;
(2)判斷字符串是否為空
Console.WriteLine(string.IsNullOrEmpty(string.Empty));
(3)字符串拘留池(駐留池)
使用字符串的時候,如果字符串相同,那么所有變量都指向同一個地方
(4)字符串的比較方法
1)比較兩個字符串可以使用==或者Equals
2)Equals的使用
->靜態版本 string.Equals(object objA,object objB[,StringComparison com]);
->實例版本 str.Equals(object objA);
3)一個靜態的方法 Compare
->string.Compare(str1,str2)
str1>str2 1
str1=str2 0
str1<str2 -1
(5)全部轉換為小寫,或者大寫 ToLower,ToUpper
string str="assdfdSDS";
str=str.ToUpper();
Console.WriteLine(str); //全部變成大寫輸出
(6)去掉兩端的空格和指定的元素
string str=" 1234343 ";
str=str.Trim();
1)Trim(params char[] chs)
string str = " 11154544dfddf4351111 ";
str = str.Trim(' ', '1');
Console.WriteLine(str);
//輸出結果:54544dfddf435
(7)字符串的合並和分隔
1)合並
string[] str = { "韓迎龍", "李瀟絮", "小李飛刀" };
string s = string.Join("|", str);
Console.WriteLine(s);
Console.ReadKey();
2)分隔
語法:
string[] <string>.Split(params char[] chs)
string[] <string>.Split(new char[] chs,StringSplitOptions.RemoveEmpty)
string s = "韓迎龍|23|男|女";
string[] str = s.Split('|');
Console.ReadKey();
(8)判斷字符串的長度
1)語法:<string>.Length;
2)字符串可以像數組一樣使用"下標"訪問(索引)
for(int i=0;i<str.Length;i++)
{
Console.WriteLine(str[i]);
}
(9)字符串查找
1)判斷是否包含 Contains
->語法:bool <string>.Contains(string str);
string str = "張三,韓迎龍,李四,王五,馬六,楊七";
if (str.Contains("韓迎龍"))
{
Console.WriteLine("查找到了");
}
else
{
Console.WriteLine("沒找到");
}
->模擬Contains的實現(很局限)
static bool MyContains(string src, char cmp)
{
bool isTrue = false;
for (int i = 0; i < src.Length; i++)
{
if (src[i] == cmp)
{
isTrue = true;
break;
}
}
return isTrue;
}
2)IndexOf 尋找索引
->語法:
int <string>.IndexOf(char ch);
int <string>.IndexOf(char ch[,int startIndex]);
int <string>.IndexOf(string str[,int startIndex]);
string str = " 好好學習,天天向上";
int indeof = str.IndexOf('向');
->模擬MyIndex的算法(很局限)
static int MyIndex(string src, char cmp)
{
int index = -1;
for (int i = 0; i < src.Length; i++)
{
if (src[i] == cmp)
{
index = i;
break;
}
}
return index;
}
3)找出字符串中所有的"e"
static void Main(string[] args)
{
string str = "asfseeefsafserefeefsde";
int index = -1;
do
{
index = str.IndexOf('e', index + 1);
if (index != -1)
{
Console.WriteLine(index);
}
} while (index != -1);
}
(10)LastIndexOf 從右邊往左邊找
string str = "32errrwefsfsd";
int index = str.LastIndexOf('e'); //輸出7
(11)子字符串
1)語法:string <string>.SubString(開始的索引,字符串的長度);
string <string>.SubString(開始的索引);
2)案例:
string str = @"F:\heima\practice\string.exe";
int start = str.IndexOf('\\');
int length = str.IndexOf('\\', start + 1) - start;
string s = str.Substring(start + 1, length - 1);
3)跑馬燈的效果
string str = "北京歡迎您 ";
while (true)
{
Console.Clear();
str = str.Substring(1) + str.Substring(0, 1);
Console.WriteLine(str);
System.Threading.Thread.Sleep(200);
}
字符串的插入,移除,替換
1)insert
string str = "時間就是一把殺豬刀啊";
str = str.Insert(0, "世界上");
2)remove
string str = "時間就是一把殺豬刀啊";
str = str.Remove(0, 2);
3)replace
string str = "時間就是一把殺豬刀啊";
str = str.Replace("時間", "小賢");
(13)判斷結束和開始
1)判斷字符<string>串是否已某字符串開始或結束
2)bool <string>.StartsWith(string str);
3)bool <string>.EndsWith(string str);
1)第一個案例
string[] str = {"白天不懂夜的黑.mp3",
"夢想的力量.mp3",
"舊夢重彈.wma",
"我相信.mp3"
};
for (int i = 0; i < str.Length; i++)
{
if (str[i].EndsWith(".mp3"))
{
Console.WriteLine(str[i] + "下載成功");
}
else
{
Console.WriteLine(str[i] + "格式不正確");
}
}
2)第二個案例
static void Main(string[] args)
{
string path1= "http://www.cnblogs.com";
string path2 = "http://www.cnblogs.com/";
string file = "舊夢重彈.mp3";
string downfile = GetFileName(path1, file);
Console.WriteLine(downfile);
Console.ReadKey();
}
static string GetFileName(string path, string file)
{
if (path.EndsWith("/"))
{
return path + file;
}
else
{
return path + '/' + file;
}
}
(14)字符串的幾個練習題
1)接收用戶輸入的字符串,將其中的字符以相反的順序輸出"韓迎龍"->"龍迎韓"
static void Main(string[] args)
{
string str = "韓迎龍";
//第一種寫法
for (int i = str.Length-1; i >=0; i--)
{
Console.Write(str[i] );
}
//第二種寫法
string strname = Exercise(str);
Console.WriteLine(strname);
}
static string Exercise(string str)
{
char[] chs = str.ToCharArray(); //變成char數組
for (int i = 0; i < chs.Length / 2; i++)
{
char temp = chs[i];
chs[i] = chs[chs.Length - i - 1];
chs[chs.Length - i - 1] = temp;
}
return new string(chs);
}
2)接受用戶輸入的一句英文,將其中的單詞反序輸出。"I Love you"->"I evol uoy"
static void Main(string[] args)
{
string str = "I Love You";
str = Exercise(str);
Console.WriteLine(str);
}
static string Exercise(string str)
{
string[] strs = str.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < strs.Length; i++)
{
strs[i] = Exercisetwo(strs[i]);
}
return string.Join(" ", strs);
}
static string Exercisetwo(string str)
{
char[] chs = str.ToCharArray(); //變成char數組
for (int i = 0; i < chs.Length / 2; i++)
{
char temp = chs[i];
chs[i] = chs[chs.Length - i - 1];
chs[chs.Length - i - 1] = temp;
}
return new string(chs);
}
3)"2012年12月21日"從日期字符串中把年月日分別取出來,打印到控制台
static void Main(string[] args)
{
string str = "2012年10月03日";
string[] strs = str.Split(new char[] { '年', '月', '日' });
Console.WriteLine(string.Join(" ", strs));
Console.ReadKey();
}
4)把csv文件中的聯系人的姓名和電話顯示出來,簡單模擬
注:首先將一個name.txt結構的文檔放在項目的Bin的Debug目錄下面,使其代碼能夠讀到這個,里面的結構是"韓迎龍|男|23"
static void Main(string[] args)
{
string[] lines = File.ReadAllLines("name.txt");
for (int i = 0; i < lines.Length; i++)
{
string[] strTemp = lines[i].Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine("姓名:{0},年齡:{1}", strTemp[0], strTemp[2]);
}
}
