黑马程序员技术交流社区

标题: split的疑问 [打印本页]

作者: 赵科铭    时间: 2013-4-8 17:11
标题: split的疑问
本帖最后由 赵科铭 于 2013-4-9 01:09 编辑

刚看winform的视频,
  1. string[] strs = email.Split('@');
  2. if (strs.length != 2)
  3. {
  4.         MessageBox.Show("非法的email地址");
  5. }
复制代码
为什么不等于2就是非法的email地址。
还有split的一般常用的用法有哪些?
作者: 张正强    时间: 2013-4-8 19:47
首先一段字符串,用spilt(‘@’)方法把它一分为二(因为邮件的格式是用户名@域名),所以如果字符串分割后为1,那就是不包含@,如果大于2,那就包含多个@
如果使用正则表达式可以这样来写,仅供参考:
string strEmail = txtEmail.Text;
Regex reg = new Regex(@"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$");//邮件验证
if (reg.IsMatch(strEmail ))
{
//符合邮件规则进行的操作
}

作者: 杜磊    时间: 2013-4-8 19:48
string[] strs = email.Split('@')的意思是将字符串email以字符'@'分割的意思。
假如现在有一个正确的email地址,如yangzhongke@126.com。上述代码就把这个地址分割成"yangzhongke","126.com"二个字符串。
对应的就是strs[0],strs[1].如果字符串数组strs的长度不等于2,就说明这个地址是不合法的。

第一种方法:
string s=abcdeabcdeabcde;
string[] sArray=s.Split(c) ;
foreach(string i in sArray)
  Console.WriteLine(i.ToString());
输出下面的结果:
ab
deab
deab
de

第二种方法:
我们看到了结果是以一个指定的字符进行的分割。使用另一种构造方法对多个字符进行分割:
string s=abcdeabcdeabcde
string[] sArray1=s.Split(new char[3]{c,d,e}) ;
foreach(string i in sArray1)
  Console.WriteLine(i.ToString());
可以输出下面的结果:
ab
ab
ab

第三种方法:
除了以上的这两种方法以外,第三种方法是使用正则表达式。新建一个控制台项目。然后先添加 using System.Text.RegularExpressions;
System.Text.RegularExpressions
string content=agcsmallmacsmallgggsmallytx;
string[]resultString=Regex.Split(content,small,RegexOptions.IgnoreCase)
foreach(string i in resultString)
  Console.WriteLine(i.ToString());
输出下面的结果:
agc
mac
ggg
ytx

第四种方法:
string str1=我*****是*****一*****个*****教*****师;
string[] str2;
str1=str1.Replace(*****,*) ;
str2=str1.Split(*) ;
foreach(string i in str2)
  Console.WriteLine(i.ToString());

第五种方法:
string str1=我**是*****一*****个*****教*****师;
我希望显示的结果为:我是一个教师。
我如果采用上面的第四种方法来做就会产生下面的错误:我   是一个教师。中间有空格输出,所以输出结果并不是希望的结果,这就又回到了正则表达式了,这时可以采用下面的第五种方法:
string str1=我**是*****一*****个*****教*****师;
string[] str2 = System.Text.RegularExpressions.Regex.Split(str1,@
  • +);
    foreach(string i in str2)
      Console.WriteLine(i.ToString());
    这里通过
  • + 巧妙的完成了我们的目标。
    作者: 严夫    时间: 2013-4-8 20:55
    split()就是 将字符串分成N个字符串,根据你给的参数来划分。挺好用的
    作者: 陈志盟    时间: 2013-4-8 21:18
    因为Split('@')的作用是把Email的地址用@分割成一个长度为2的数组。所以,如果这个数组的长度大于或者小于2的话,它就不是一个合格的Email地址。
    作者: 赵科铭    时间: 2013-4-8 21:35
    张正强 发表于 2013-4-8 19:47
    首先一段字符串,用spilt(‘@’)方法把它一分为二(因为邮件的格式是用户名@域名),所以如果字符串分割后 ...

    强哥 果然犀利
    作者: HM刘磊    时间: 2013-4-9 17:38
    string.split()是一个字符串分割函数,采用指定的参数作为分隔符,对字符串进行分割,其返回值为字符串数组,string[]
    楼主的实例code就是采用'@'作为参数来对指定字符串进行分割,其返回值的长度不等于2那当然不符合Email地址规则了。




    欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2