模糊算法java代码 模糊算法基本原理

java中如何模糊查找你这个把四个字拆开单独找不就完了= =
所谓的模糊查找最多也就像sql里面的like
计算机本身就是精确的 。你要模糊就要加入人为判断这是毋庸置疑的 。
求一个基于java的模糊匹配算法今天因为业务需求,需要在java中进行字符串的模糊匹配,由于要比较的对象长度不同 , 也没有固定的组成规则,收集到下列三个方法解决问题
方法一、
public intindexOf(String str)
返回指定子字符串在此字符串中第一次出现处的索引 。返回的整数是
this.startsWith(str, k)为 true 的最小 k值 。
参数:str - 任意字符串 。
返回:如果字符串参数作为一个子字符串在此对象中出现,则返回第一个这种子字符串的第一个字符的索引;如果它不作为一个子字符串出现 , 则返回-1 。
if(str1.indexOf("RO")=0 ||str1.indexOf("EL")=0 ||str1.indexOf("RO")=0)
{存在}
方法二、
public boolean contains(CharSequence s)
当且仅当此字符串包含指定的 char 值序列时,返回true 。
参数:s- 要搜索的序列(注意:String 类是实现CharSequence接口的一个实体类)
返回:如果此字符串包含s , 则返回 true , 否则返回 false
例子:
Str.contains("12334")
注意:,意思为,Str字符串中出现字符串“12345”五个字符中的任何一个,那么则返回true;
方法三、通过正则表达式 matches方法
publicboolean matches(String regex)
告知此字符串是否匹配给定的正则表达式 。
调用此方法的str.matches(regex)形式与以下表达式产生的结果完全相同:
Pattern.matches(regex,str)
参数:regex - 用来匹配此字符串的正则表达式
返回:当且仅当此字符串匹配给定的正则表达式时,返回 true
友情提示,要想真正的用好正则表达式,正确的理解元字符是最重要的事情 。下表列出了所有的元字符和对它们的一个简短的描述 。
元字符 描述
\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符 。例如,“\n”匹配字符“n” 。“\\n”匹配一个换行符 。序列“\\”匹配“\”而“\(”则匹配“(” 。
^ 匹配输入字符串的开始位置 。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置 。
$ 匹配输入字符串的结束位置 。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置 。
* 匹配前面的子表达式零次或多次 。例如,zo*能匹配“z”以及“zoo” 。*等价于{0,} 。
匹配前面的子表达式一次或多次 。例如,“zo ”能匹配“zo”以及“zoo”,但不能匹配“z” 。等价于{1,} 。
? 匹配前面的子表达式零次或一次 。例如,“do(es)?”可以匹配“does”或“does”中的“do” 。?等价于{0,1} 。
{n} n是一个非负整数 。匹配确定的n次 。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o 。
{n,} n是一个非负整数 。至少匹配n次 。例如,“o{2,}”不能匹配“Bob”中的“o” , 但能匹配“foooood”中的所有o 。“o{1,}”等价于“o ” 。“o{0,}”则等价于“o*” 。
【模糊算法java代码 模糊算法基本原理】{n,m} m和n均为非负整数,其中n=m 。最少匹配n次且最多匹配m次 。例如,“o{1,3}”将匹配“fooooood”中的前三个o 。“o{0,1}”等价于“o?” 。请注意在逗号和两个数之间不能有空格 。
? 当该字符紧跟在任何一个其他限制符(*, ,?,{n} , {n,} , {n,m})后面时,匹配模式是非贪婪的 。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串 。例如,对于字符串“oooo”,“o ?”将匹配单个“o” , 而“o?”将匹配所有“o” 。
.点 匹配除“\n”之外的任何单个字符 。要匹配包括“\n”在内的任何字符,请使用像“(.|\n)”的模式 。
(pattern) 匹配pattern并获取这一匹配 。所获取的匹配可以从产生的Matches集合得到 , 在VBScript中使用SubMatches集合 , 在JScript中则使用$0…$9属性 。要匹配圆括号字符,请使用“\(”或“\)” 。
(?:pattern) 匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用 。这在使用或字符“(|)”来组合一个模式的各个部分是很有用 。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式 。
(?=pattern) 正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串 。这是一个非获取匹配 , 也就是说,该匹配不需要获取供以后使用 。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows” 。预查不消耗字符 , 也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始 。
(?!pattern) 正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串 。这是一个非获取匹配,也就是说 , 该匹配不需要获取供以后使用 。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows” 。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始 。
(?=pattern) 反向肯定预查,与正向肯定预查类似 , 只是方向相反 。例如,“(?=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows” 。
(?!pattern) 反向否定预查,与正向否定预查类似,只是方向相反 。例如“(?!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows” , 但不能匹配“2000Windows”中的“Windows” 。
x|y 匹配x或y 。例如,“z|food”能匹配“z”或“food” 。“(z|f)ood”则匹配“zood”或“food” 。
[xyz] 字符集合 。匹配所包含的任意一个字符 。例如,“[abc]”可以匹配“plain”中的“a” 。
[^xyz] 负值字符集合 。匹配未包含的任意字符 。例如 , “[^abc]”可以匹配“plain”中的“plin” 。
[a-z] 字符范围 。匹配指定范围内的任意字符 。例如 , “[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符 。
[^a-z] 负值字符范围 。匹配任何不在指定范围内的任意字符 。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符 。
\b 匹配一个单词边界,也就是指单词和空格间的位置 。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er” 。
\B 匹配非单词边界 。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er” 。
\cx 匹配由x指明的控制字符 。例如,\cM匹配一个Control-M或回车符 。x的值必须为A-Z或a-z之一 。否则,将c视为一个原义的“c”字符 。
\d 匹配一个数字字符 。等价于[0-9] 。
\D 匹配一个非数字字符 。等价于[^0-9] 。
\f 匹配一个换页符 。等价于\x0c和\cL 。
\n 匹配一个换行符 。等价于\x0a和\cJ 。
\r 匹配一个回车符 。等价于\x0d和\cM 。
\s 匹配任何空白字符,包括空格、制表符、换页符等等 。等价于[\f\n\r\t\v] 。
\S 匹配任何非空白字符 。等价于[^ \f\n\r\t\v] 。
\t 匹配一个制表符 。等价于\x09和\cI 。
\v 匹配一个垂直制表符 。等价于\x0b和\cK 。
\w 匹配包括下划线的任何单词字符 。等价于“[A-Za-z0-9_]” 。
\W 匹配任何非单词字符 。等价于“[^A-Za-z0-9_]” 。
\xn 匹配n,其中n为十六进制转义值 。十六进制转义值必须为确定的两个数字长 。例如,“\x41”匹配“A” 。“\x041”则等价于“\x041” 。正则表达式中可以使用ASCII编码 。
\num 匹配num,其中num是一个正整数 。对所获取的匹配的引用 。例如,“(.)\1”匹配两个连续的相同字符 。
\n 标识一个八进制转义值或一个向后引用 。如果\n之前至少n个获取的子表达式 , 则n为向后引用 。否则,如果n为八进制数字(0-7),则n为一个八进制转义值 。
\nm 标识一个八进制转义值或一个向后引用 。如果\nm之前至少有nm个获得子表达式,则nm为向后引用 。如果\nm之前至少有n个获取,则n为一个后跟文字m的向后引用 。如果前面的条件都不满足,若n和m均为八进制数字(0-7),则\nm将匹配八进制转义值nm 。
\nml 如果n为八进制数字(0-3),且m和l均为八进制数字(0-7),则匹配八进制转义值nml 。
\un 匹配n,其中n是一个用四个十六进制数字表示的Unicode字符 。例如,?匹配版权符号(?) 。
注意:在普通的正则表达式中 , 15个具有特殊意义的元字符需要进行转义:
( [ { } ] ) \ ^ - $ | ? *.
字符串精确匹配
public booleanequalsIgnoreCase(String anotherString)
将此 String 与另一个 String比较 , 不考虑大小写 。如果两个字符串的长度相同,并且其中的相应字符都相等(忽略大小写),则认为这两个字符串是相等的 。
在忽略大小写的情况下,如果下列至少一项为 true,则认为 c1 和c2 这两个字符相同 。
这两个字符相同(使用 == 运算符进行比较) 。
对每个字符应用方法 Character.toUpperCase(char) 生成相同的结果 。
对每个字符应用方法 Character.toLowerCase(char) 生成相同的结果 。
参数:
anotherString - 与此 String 进行比较的String 。
返回:
如果参数不为 null , 且这两个 String 相等(忽略大小写),则返回true;否则返回 false 。
在android , 怎么实现activity模糊图层效果呢Android里面:
最普遍的模糊技术是这样做的:从TextView的后一层背景中截取一部分;进行模糊处理;把模糊处理后的部分设置为TextView的背景 。
实现activity模糊图层效果是RenderScript是Android在API 11之后加入的,用于高效的图片处理,包括模糊、混合、矩阵卷积计算等 , 通过一种fastblur模糊图片算法来计算一张图片像素,进而更改图片的分辨率和模糊程度 。算法代码可以参考这篇csdn博客介绍几种模糊算法,地址如下: 。
几种算法实现的效果都差不多,但是效果和时间上还是有很大区别 , 这取决于你的Android实际的运行环境,如果机器是Android API 2.0以下的 , 就不能使用RenderScript类,只能使用硬编码方式,这就涉及到OPENGL的知识了,OPENGL就是对图像进行各种处理的一门知识,这些知识都可以到网上找得到 。我在csdn上次了一个Android图片模糊处理的一个小demo,欢迎下载:链接如下:
关于模糊算法java代码和模糊算法基本原理的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读