首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

因项目需要,写了一个String切割String方法,抛砖引玉,希望大家给个效率更高的算法解决方法

2012-02-23 
因项目需要,写了一个String切割String方法,抛砖引玉,希望大家给个效率更高的算法如题,都是Split()方法惹的

因项目需要,写了一个String切割String方法,抛砖引玉,希望大家给个效率更高的算法
如题,
都是Split()方法惹的祸,
只能用单个char来切割字符串,
用char[]更是形同鸡肋....
没办法,只能先写个用着,
这个方法稍微改动下,
就能用List<String>切割的.

代码如下,
希望大家给个更好的算法.

C# code
        public static List<string> splitByStr(string str, string splitStr)        {            List<string> re = new List<string>();            if (string.IsNullOrEmpty(str) || string.IsNullOrEmpty(splitStr) || str.Length <= splitStr.Length)            {                return re;            }            int cnt = str.Length - splitStr.Length;            int k = 0;            for (int i = 0; i < cnt; i++)            {                string tmpStr = str.Substring(i, splitStr.Length);                if (tmpStr.Equals(splitStr))                {                    re.Add(str.Substring(k, i - k));                    k = i + splitStr.Length;                }                if (i == cnt - 1)                {                    re.Add(str.Substring(k, str.Length - k));                }            }            return re;        }


[解决办法]
C# code
        public static string[] Split(string s, string SplitChar)        {            string[] returnValue = null;            if (s.Contains(s) == false)                returnValue = new string[] { s};            else                returnValue = s.Split(char.Parse(SplitChar));            return returnValue;        }
[解决办法]
不错啊 看看
[解决办法]
string的Split本来就有一个重载是传入string[]参数进行对string分割的啊……
[解决办法]
也可以尝试用Regex.Split()来实现分割
[解决办法]
mark 学习
[解决办法]
接分,学习。
[解决办法]
String.Split有很多重载的方法

由此可见对.net 类的熟悉可以提高生产效率
[解决办法]
??
似乎好像我没记错的话,split应该本身就支持string[]才对
[解决办法]
探讨

C# code

//不知我这样理解 能不能满足你的本意?
public static List<string> splitByStr(string str, string splitStr)
{
return Regex.Split(str,"(?:"+splitStr+")").ToList();
}

[解决办法]
除非你是WinCE程序,否则这问题就太没水平了...
[解决办法]
没明白要干嘛
[解决办法]
貌似楼主想多了。。。请看如下代码

C# code
string str="aaajsbbbjsccc";string[] sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase);foreach (string i in sArray) Response.Write(i.ToString() + "<br>");输出结果:aaabbbccc 2、用多个字符来分隔:string str="aaajbbbscccjdddseee";string[] sArray=str.Split(new char[2]{'j','s'}); foreach(string i in sArray) Response.Write(i.ToString() + "<br>"); 输出结果:aaabbbcccdddeee
[解决办法]
C# code
List<string> re = new List<string>();            if (string.IsNullOrEmpty(str) || string.IsNullOrEmpty(splitStr) || str.Length <= splitStr.Length)            {                return re; // re.Add(str);            } 


[解决办法]
怎么给转到非技术区了?
[解决办法]

探讨
引用:
string的Split本来就有一个重载是传入string[]参数进行对string分割的啊……

需要添加什么引用?
为什么我在VS2008里面只有两个:
Split(char)
Split(char[])

[解决办法]
典型的KMP算法,求剩余字符串的第一个匹配位置。
[解决办法]
C# code
 /// <summary>        /// 分割字符串        /// </summary>        public static string[] SplitString(string strContent, string strSplit)        {            if (!Utils.StrIsNullOrEmpty(strContent))            {                if (strContent.IndexOf(strSplit) < 0)                {                    string[] tmp = { strContent };                    return tmp;                }                return Regex.Split(strContent, Regex.Escape(strSplit), RegexOptions.IgnoreCase);            }            else            {                return new string[0] { };            }        }        /// <summary>        /// 分割字符串        /// </summary>        /// <returns></returns>        public static string[] SplitString(string strContent, string strSplit, int count)        {            string[] result = new string[count];            string[] splited = SplitString(strContent, strSplit);            for (int i = 0; i < count; i++)            {                if (i < splited.Length)                    result[i] = splited[i];                else                    result[i] = string.Empty;            }            return result;        } 

热点排行