java indexof 通配符,字符串与含有通配符‘*’的字符串匹配(非正则表达式)
顺利找到工作之后,每天勤勤恳恳的上班中...
项目需要搜索含有通配符的文件名的文件,*号表示任意多字符。这里应该只处理英文。
如此简单的要求,还是不要用正则表达式,一是简单,而是正则表达式感觉杀鸡用了牛刀了。
只含有*号的情况就简单的很了,*号匹配任意多字符,首先还是着眼于非*号的文字。
比如 :
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 通配符,字符串与含有通配符‘*’的字符串匹配(非正则表达式)相关推荐
- 字符串转换成整数,字符串匹配问题
本文转自csdn大神v_JULY_v的博客 地址: http://blog.csdn.net/v_july_v/article/details/9024123 阅读心得:自己原先想得太天真了... 第 ...
- Java判断一个字符串中是否包含中文字符工具类
Java判断一个字符串是否有中文一般情况是利用Unicode编码(CJK统一汉字的编码区间:0x4e00–0x9fbb)的正则来做判断,但是其实这个区间来判断中文不是非常精确,因为有些中文的标点符号比 ...
- linux下匹配字符串,linux上强大的字符串匹配工具详解-grep
1. grep 是什么 grep 是用于匹配输入数据中符合条件的字符串的工具,其匹配过程支持正则表达式,因而匹配能力非常强大. grep 可以从文件或者标准输入设备中读取数据,若不指定任何文件名称,或 ...
- java indexof 子字符串_Java中字符串中子串的查找共有四种方法(indexof())
Java中字符串中子串的查找共有四种方法(indexof()) Java中字符串中子串的查找共有四种方法,如下: 1.int indexOf(String str) :返回第一次出现的指定子字符串在此 ...
- java截取指定字符串中的某段字符
利用字符串的substring函数来进行截取. 其中,substring函数有两个参数: 1.第一个参数是开始截取的字符位置.(从0开始) 2.第二个参数是结束字符的位置+1.(从0开始) index ...
- Java给定一个字符串数组,判断每个字符出现次数
题目要求:给定一个字符串,判断每个字符出现多少次? 解决思路:利用Map的特性:即Map集合中如果两个key(键)值是一样相同的,那么,后放(put)入的值会将前面存在的value(值)替换掉,也就是 ...
- Java中截取字符串中小数点前面的字符
1.通过下标获取 String number = "2563.2154";int index = number.indexOf(".");String intN ...
- java http头 字符串转日期_springboot~DTO字符字段与日期字段的转换问题
不会自动转换string与date 主要是这个意思,前端提交的JSON里,日期是一个字符串,而对应后端的实体里,它是一个Date的日期,这两个在默认情况下是不能自动转换的,我们先看一下实体 实体 pu ...
- [java] 找出字符串中出现最多的字符和出现的次数
逛园子看到一童鞋做的华为上机题目,写来好长的代码,懒得看,感觉不可能这么难,于是动手敲了下. import java.util.Scanner;public class StringTest {/** ...
最新文章
- Pandas 基础 (2)—— DataFrame
- 360金融首席科学家张家兴:我们如何做数据AI融合中台?
- “评IDC,送免费主机”活动,主机无任何限制,无广告
- 手动安装sys驱动文件_海龙工具的正确安装及卸载方法,自己动手丰衣足食
- ElementUI改变el-table的表头颜色以及各行的颜色
- 软件工程综合实践专题——个人博客作业1
- 大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(十二)多语言支持...
- css不继承父类样式_提升你的Python编程能力,细说类的继承,拿走不谢
- Solidity 中 revert(), assert() 和 require() 的使用方法
- FFmpeg示例程序合集-Git批量获取脚本
- 将list集合中按照某个字段排序(从大到小),然后将list中的对象倒序
- html5 游戏 性能测试工具,没事跑个分!几款Chrome内核浏览器性能测试
- 谷歌浏览器、Yandex浏览器使用体验分享
- 计算机辅助模具设计实训心得6,模具设计实训心得体会3篇
- 二进制数转换为十进制数c语言程序代码,任意二进制数转换为十进制数
- 关于使用SpringBoot导出Pdf(itextpdf)
- 用Date计算日期相差多少天
- LeetCode算法之蓄水池算法
- 模拟电路实验 03 - | 负反馈放大电路
- oracle apex 日志,Oracle Apex 实用笔记系列 1 - Oracle Apex 调试技巧
热门文章
- java 核心技术2_你必须掌握的 21 个 Java 核心技术
- mysql利用tgz恢复_Mysql备份与恢复方法_MySQL
- mysql 参数调整_mysql需要调整的参数-阿里云开发者社区
- AtCoder SoundHound Inc. Programming Contest 2018 E + Graph (soundhound2018_summer_qual_e)
- codeforces 580D Kefa and Dishes
- 编译:ffmpeg,精简ffmpeg.exe
- PHP下用Memcache 实现消息队列
- 361766103.jpg
- UVA 694-The Collatz Sequence
- ASP.NETWebPage应用深入探讨