字符串判断更快的方法,谢谢

zhenghq1001 2013-02-04 04:48:15
string str = "0702110409"; (实际上没有10)

string str = "0702101109"; (实际上没有01)


string str = "0702011209"; (实际上没有11)

(str实际上是由01、02、03、04、05、06、07、08、09、10、11、12任意五个组成)

判断str里是否包含string target = 01或02或03或04或05或06或07或08或09或10或11或12里的任意一个

刚才,各位老师提示说用:

str.Contains(target)
str.IndexOf(target)

但是,对于01或11或10的判断,会有问题

但如果用List<string> 效率低,有更好的方法吗?谢谢
...全文
173 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhq1001 2013-02-04
  • 打赏
  • 举报
回复
哦,明白了,问题解决了,速度的确快了很多很多很多很多,谢谢gxingmin老师 为什么用List<string>会影响速度呢?
gxingmin 2013-02-04
  • 打赏
  • 举报
回复
引用 15 楼 zhq1001 的回复:
List<List<string>> nums = new List<List<string>>();
这肯定不行啊 nums[r-2][0]这个是string类型 nums[r-2][0][0]这个才是char类型
gxingmin 2013-02-04
  • 打赏
  • 举报
回复
引用 13 楼 zhq1001 的回复:
我的grp 是这样定义的 List<string> grp = new List<string>();
这个没事 grp[c-7]会自动是string类型 grp[c-][n]是char类型 目测nums[r-2]不是string类型的
zhq1001 2013-02-04
  • 打赏
  • 举报
回复
List<List<string>> nums = new List<List<string>>();
gxingmin 2013-02-04
  • 打赏
  • 举报
回复
目测nums[r-2]不是string类型的
zhq1001 2013-02-04
  • 打赏
  • 举报
回复
我的grp 是这样定义的 List<string> grp = new List<string>();
gxingmin 2013-02-04
  • 打赏
  • 举报
回复
你把我定义的那个函数复制进去 直接这样判断不行吗? if(Find(grp[c-7],nums[r-2])) //找到 else //没找到
gxingmin 2013-02-04
  • 打赏
  • 举报
回复
真奇怪 把你代码贴出来,帮你看看错在哪儿了
zhq1001 2013-02-04
  • 打赏
  • 举报
回复


grp[c-7] 相当于 str
nums[r - 2] 相当于 target
zhq1001 2013-02-04
  • 打赏
  • 举报
回复
错误: 运算符"=="无法应用于"char"和"string"类型的操作数
catchdream 2013-02-04
  • 打赏
  • 举报
回复

        public static bool Find(string str, string target)
        {
            return Regex.Matches(str, @"\d{2}").Cast<Match>().Select(x => x.Value).Contains(target);
        }
  • 打赏
  • 举报
回复
引用 1 楼 gxingmin 的回复:
晕,这样不是可以吗?怎么又开贴了 C# code?12345678910 public bool Find(string str, string target) { for (int n = 0; n < str.Length - 1; n += 2) { if ……
这个是对的。。。。
gxingmin 2013-02-04
  • 打赏
  • 举报
回复
引用 5 楼 zhq1001 的回复:
引用 1 楼 gxingmin 的回复:晕,这样不是可以吗?怎么又开贴了 C# code?12345678910 public bool Find(string str, string target) { for (int n = 0; n < str.Length - 1; n += 2) ……
能运行起来吗?是不是编译器没刷新过来啊 我这边是可以的啊,字符串查找线性循环是最快的
zhq1001 2013-02-04
  • 打赏
  • 举报
回复
引用 1 楼 gxingmin 的回复:
晕,这样不是可以吗?怎么又开贴了 C# code?12345678910 public bool Find(string str, string target) { for (int n = 0; n < str.Length - 1; n += 2) { if ……
老师,是这样的 我的string target = "10"; 按您的写法 target[0],target[1],下面出现红色波浪线,我错在哪里呢?
dalmeeme 2013-02-04
  • 打赏
  • 举报
回复
判断有没有01、02、03、04、05:
		string[] ss = { "01", "02", "03", "04", "05" };
		string str = "0702110409";
		bool r = Regex.Matches(str, @"\d{2}").Cast<Match>().Select(x => x.Value).Any(x => ss.Contains(x));
		Response.Write(r);
  • 打赏
  • 举报
回复
string str = "0702110409"; string str2="数字"; bool t=Regex.IsMatch(str,@"(?<=(\d{2})*)"+str2);
dalmeeme 2013-02-04
  • 打赏
  • 举报
回复
判断有没有10: string str = "0702110409"; bool r = Regex.Matches(str, @"\d{2}").Cast<Match>().Select(x => x.Value).Contains("10"); Console.WriteLine(r);
gxingmin 2013-02-04
  • 打赏
  • 举报
回复
晕,这样不是可以吗?怎么又开贴了
  
       public bool  Find(string str, string target)
        {
            for (int n = 0; n < str.Length - 1; n += 2)
            {
                if (str[n] == target[0] && str[n + 1] == target[1])
                    return true;
            }
            return false;
        }
bool b1=Find("0702110409","10"); //结果是false bool b2=Find("0702110409","11"); //结果是true

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧