顺利找到工作之后,每天勤勤恳恳的上班中...

项目需要搜索含有通配符的文件名的文件,*号表示任意多字符。这里应该只处理英文。

如此简单的要求,还是不要用正则表达式,一是简单,而是正则表达式感觉杀鸡用了牛刀了。

只含有*号的情况就简单的很了,*号匹配任意多字符,首先还是着眼于非*号的文字。

比如 :

abcdefg 匹配 a*d*g,这是个通用的匹配,它过了,也就都过了。

很显然,a应该在开头,g应该在结尾。两个函数StartWith和EndWith,就绝对的保证了开头和结尾。

中间,随便匹配一下,也就ok了,鉴于 a*c*e*g形式的存在,匹配还是应该按顺序来。而不是掐头去尾再搜索一下。

第一步,把a*c*e*g split数组 [a,c,e,g]

第二步,匹配第一个a,找到之后,将原字符串截掉a 的到bcdefg.

第三步, 匹配c 这里用IndexOf ,找到c的位置,把 c前面的都干掉 得到 defg

第四步,找到e的位置,同样干掉前面一节,得到fg。

这时候只剩下g一个匹配项目了,直接endwith即可。

中间任何一步匹配失败,则整体失败。

发个代码,小心了(代码害人):

private bool IsMatch(string src,stringpattern)

{string[] ps = pattern.Split('*');for(int i = 0; i < ps.Length; i++)

{if(i == 0)

{if(src.StartsWith(ps[i]))

{

src=src.Substring(ps[i].Length);

}

}else if (i == ps.Length-1)

{if(src.EndsWith(ps[i]))

{return true;

}

}else{int p =src.IndexOf(ps[i]);if (p == -1)

{return false;

}else{

src= src.Substring(p +ps[i].Length);

}

}

}return false;

}

java indexof 通配符,字符串与含有通配符‘*’的字符串匹配(非正则表达式)相关推荐

  1. 字符串转换成整数,字符串匹配问题

    本文转自csdn大神v_JULY_v的博客 地址: http://blog.csdn.net/v_july_v/article/details/9024123 阅读心得:自己原先想得太天真了... 第 ...

  2. Java判断一个字符串中是否包含中文字符工具类

    Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比 ...

  3. linux下匹配字符串,linux上强大的字符串匹配工具详解-grep

    1. grep 是什么 grep 是用于匹配输入数据中符合条件的字符串的工具,其匹配过程支持正则表达式,因而匹配能力非常强大. grep 可以从文件或者标准输入设备中读取数据,若不指定任何文件名称,或 ...

  4. java indexof 子字符串_Java中字符串中子串的查找共有四种方法(indexof())

    Java中字符串中子串的查找共有四种方法(indexof()) Java中字符串中子串的查找共有四种方法,如下: 1.int indexOf(String str) :返回第一次出现的指定子字符串在此 ...

  5. java截取指定字符串中的某段字符

    利用字符串的substring函数来进行截取. 其中,substring函数有两个参数: 1.第一个参数是开始截取的字符位置.(从0开始) 2.第二个参数是结束字符的位置+1.(从0开始) index ...

  6. Java给定一个字符串数组,判断每个字符出现次数

    题目要求:给定一个字符串,判断每个字符出现多少次? 解决思路:利用Map的特性:即Map集合中如果两个key(键)值是一样相同的,那么,后放(put)入的值会将前面存在的value(值)替换掉,也就是 ...

  7. Java中截取字符串中小数点前面的字符

    1.通过下标获取 String number = "2563.2154";int index = number.indexOf(".");String intN ...

  8. java http头 字符串转日期_springboot~DTO字符字段与日期字段的转换问题

    不会自动转换string与date 主要是这个意思,前端提交的JSON里,日期是一个字符串,而对应后端的实体里,它是一个Date的日期,这两个在默认情况下是不能自动转换的,我们先看一下实体 实体 pu ...

  9. [java] 找出字符串中出现最多的字符和出现的次数

    逛园子看到一童鞋做的华为上机题目,写来好长的代码,懒得看,感觉不可能这么难,于是动手敲了下. import java.util.Scanner;public class StringTest {/** ...

最新文章

  1. Pandas 基础 (2)—— DataFrame
  2. 360金融首席科学家张家兴:我们如何做数据AI融合中台?
  3. “评IDC,送免费主机”活动,主机无任何限制,无广告
  4. 手动安装sys驱动文件_海龙工具的正确安装及卸载方法,自己动手丰衣足食
  5. ElementUI改变el-table的表头颜色以及各行的颜色
  6. 软件工程综合实践专题——个人博客作业1
  7. 大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(十二)多语言支持...
  8. css不继承父类样式_提升你的Python编程能力,细说类的继承,拿走不谢
  9. Solidity 中 revert(), assert() 和 require() 的使用方法
  10. FFmpeg示例程序合集-Git批量获取脚本
  11. 将list集合中按照某个字段排序(从大到小),然后将list中的对象倒序
  12. html5 游戏 性能测试工具,没事跑个分!几款Chrome内核浏览器性能测试
  13. 谷歌浏览器、Yandex浏览器使用体验分享
  14. 计算机辅助模具设计实训心得6,模具设计实训心得体会3篇
  15. 二进制数转换为十进制数c语言程序代码,任意二进制数转换为十进制数
  16. 关于使用SpringBoot导出Pdf(itextpdf)
  17. 用Date计算日期相差多少天
  18. LeetCode算法之蓄水池算法
  19. 模拟电路实验 03 - | 负反馈放大电路
  20. oracle apex 日志,Oracle Apex 实用笔记系列 1 - Oracle Apex 调试技巧

热门文章

  1. java 核心技术2_你必须掌握的 21 个 Java 核心技术
  2. mysql利用tgz恢复_Mysql备份与恢复方法_MySQL
  3. mysql 参数调整_mysql需要调整的参数-阿里云开发者社区
  4. AtCoder SoundHound Inc. Programming Contest 2018 E + Graph (soundhound2018_summer_qual_e)
  5. codeforces 580D Kefa and Dishes
  6. 编译:ffmpeg,精简ffmpeg.exe
  7. PHP下用Memcache 实现消息队列
  8. 361766103.jpg
  9. UVA 694-The Collatz Sequence
  10. ASP.NETWebPage应用深入探讨