您的位置:首页 > 编程语言 > C#

【C#】如何有效的操作字符串

2011-04-19 02:05 260 查看
字符串在网络编程中有着举足轻重的作用,它用来提取数据包中有用的字段,同时也可以用来构造所要发送的数据报,经过积累,我也找到了其中的一些窍门,跟大家分享。以下代码均已C#为例。

1、分割字符串,所用方法Split。

原话是这样讲的,分割字符串是指将已有的字符串按照一定的规则进行分割,以获取新形式的子字符串。

例子:字符串“ftp://admin:11111@192.168.100.6”是登陆ftp服务器的标准格式。其中admin是用户名,1111是密码,192.168.100.6是IP地址。请编写一段代码获取这个字符串中的用户名、密码、服务器地址。
string str1 = @"ftp://admin:1111@192.168.100.6";
char[] sp = {'/',':','@' };
string[] tempsplit = str1.Split(sp);
string username = tempsplit[3];
string password = tempsplit[4];
string IP = tempsplit[5];


注意:为什么username是tempsplit[3]开始的呢?不清楚的话,可以通过以下代码进行验证。

string str1 = @"ftp://admin:1111@192.168.100.6";
char[] sp = {'/',':','@' };
string[] tempsplit = str1.Split(sp);
foreach (string s in tempsplit)
{
Console.WriteLine(s);
}


2、提取字符串,所用方法Substring。

还是上面的那个例子,这次我用的是检索字符串的方法。MSDN上说,string表示文本,一系列Unicode字符,char表示一个Unicode字符。

string str1 = @"ftp://admin:1111@192.168.100.6";
int index1 = str1.IndexOf("ftp://") + 6;
int index2 = str1.LastIndexOf(":") + 1;
int index3 = str1.IndexOf("@") + 1;
int index4 = str1.Length;
int usernamelength = index2 - index1 - 1;
int passwordlength = index3 - index2 - 1;
int iplength = index4 - index3;
string username = str1.Substring(index1, usernamelength);
string password = str1.Substring(index2, passwordlength);
string IP = str1.Substring(index3, iplength);
Console.WriteLine(username);
Console.WriteLine(password);
Console.WriteLine(IP);


注意:我在使用这个方法的时候,开始把第二个参数当成结束的位置,在调试的时候遇到很多困难。借此引起注意,不要犯这种低级的错误,在对一个方法不是完全了解的时候,可以先阅读MSDN和baidu、google。

3、构造(合并)字符串,所用方法Append。

这里需要用到的是StringBuild类,StringBuild类是存储可变字符串值的类。合并字符串时可以不用额外声明一个字符串变量来存储结果。
比如我在构造一个由HTTP发送的认证字符串时,我们可以用Append方法来构造所要发送的数据报。

StringBuilder sb = new StringBuilder();
string username = "%d2%bb%c2%b7%bf%f1%ec%ad";
string password = "e10adc3949ba59abbe56e057f20f883e";
string str1 = "formhash=3e58f988&loginfield=username&username=";
string str2 = "&password=";
string str3 = "&questionid=0&answer=&cookietime=2592000";
sb.Append(str1);
sb.Append(username);
sb.Append(str2);
sb.Append(password);
sb.Append(str3);
Console.WriteLine(sb.ToString());
Console.ReadKey();


在对字符串操作的时候,还有一把锐利的“瑞士军刀”—正则表达式。等我学习了以后再来分享学习的成果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: