黑马程序员技术交流社区

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

作者: 颜晓峰    时间: 2013-3-4 12:41
标题: split()的问题
本帖最后由 颜晓峰 于 2013-3-6 20:05 编辑

JAVA中的split(),可以使用正则表达式作为分隔符
var words = sentence.split(/\s+/)
C#中就不行了。。
C#中的split(),分隔符为char[],如果想用split()分割“1 2   3      4”,4个数字用空格分开,但空格数量不一定。。。。
请问有办法实现用split()方法分割被空格隔开,但空格数量不一定的字符串么{:soso_e137:}?
作者: 康晓璞    时间: 2013-3-4 13:24
可以变通一下使用正则将空格替换为逗号,再将新生成的字符串用逗号分隔。
例如:
  string str = "1  2  3      4";
  string[] newStr=  Regex.Replace(str,@"\s+",",").Split(',');
作者: 史金阳    时间: 2013-3-4 14:15
拿过去试试喽 只会这样了

public   static   void   Main()   
  {   
          string   str   =   "黑马 程序员    希望   黑马论坛  版主老大 加分  !!!!    ";   
          string[]   args   =   str.Split(' ');   
          ArrayList   arr   =   new   ArrayList();   
          for   (int   i   =   0;   i   <   args.Length;   i++)   
          {   
                  string   val   =   args[i].Trim();   
                  if   (val   ==   string.Empty)   continue;   
   
                  arr.Add(val);   
                  Console.WriteLine(val);   
          }   
          Console.ReadLine();   
  }
作者: 刘云东    时间: 2013-3-4 14:15
支持一下1楼,我想到另一种解决办法,就是你先分割,然后再除去空格。msdn有解释的,自己搜索一下。

Split( Char [], StringSplitOptions)
返回的字符串数组包含此字符串中的子字符串(由指定 Unicode 字符数组的元素分隔)。参数指定是否返回空数组元素。

例如:
            string st = "1 2  3    4";
            char[] chartemp = { ' ' };
            string[] arr = st.Split(chartemp,StringSplitOptions.RemoveEmptyEntries);
            //在使用的时候直接调用arr[索引].Trim(),下面的代码可以省略。
            for (int i = 0; i < arr.Length; i++)
            {
                arr[i] = arr[i].Trim();
            }




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