国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
昆明永創(chuàng)科技有限公司·技術資料下載

經(jīng)過1通宵的思考與實驗終于在2006/5/17日中午12:00點把 * ? 通配的問題解決了。

先談談?號(問號的處理比較簡單)
用for 循環(huán)進行逐一比較就可以了。

*號的處理,就比較復雜了。在這里,我采用的是 左迭歸思想進行匹配。由于鄙人文學較差,不好對代碼進行解釋。就請大家自行看看代碼里的注釋吧。(雖然少,不過關鍵地方都寫了)

public class myString {
String str=null;
myString(String value){str=value;}

public boolean isLike(String regex)
{
if(regex.indexOf("?")!=-1)return WenHao(regex);
else if(regex.indexOf("*")!=-1)return XingHao(str,regex);
return false;
}

private boolean WenHao(String regex)
{
// ?號匹配
if(str.length()!=regex.length())return false;
for(int i=0;i<regex.length();i++)
if(str.charAt(i)!=regex.charAt(i) && regex.charAt(i)!='?')
return false;
return true;
}

private boolean XingHao(String Str,String regex)
{
// *號匹配
int Lstr=Str.length();
int Lreg=regex.length();
int x1=regex.indexOf("*");
switch(x1)
{
case -1:{
//x1=-1 regex 中沒有 * 號,不需要跌歸計算
if(Lstr==Lreg)
{
if(Lstr==0)return true;
for(int kk=0;kk<Lreg;kk++)//檢測字符串是否匹配
if(Str.charAt(kk)!=regex.charAt(kk))return false;
return true;
}else
return false;
}
case 0:
{//x1=0 regex 中 * 號在首位
if(Lreg==1)return true;//只有一個星號,自然是匹配的,如 regex="*"
boolean right=false;
int p=0;
// *號在首位,定位 * 號 后一位
for(int k=0;k<Lstr;k++)
if(Str.charAt(k)==regex.charAt(x1+1)||regex.charAt(x1+1)=='*')
{p=k;right=true;break;}//遇到 ** 就直接 right=true;
if(right==false)return false;
else
{
if(p==Lstr)return true;
return XingHao(Str.substring(p,Lstr),regex.substring(x1+1,Lreg));
}
}
default:
{ //x1>0
for(int i=0;i<x1;i++)
if(Str.charAt(i)!=regex.charAt(i))return false;
return XingHao(Str.substring(x1,Lstr),regex.substring(x1,Lreg));
}
}
}



public static void main(String[] args) {

System.out.println("str=ABCD regex=ABC? :"+new myString("ABCD").isLike("ABC?"));
System.out.println("str=ABCD regex=A :"+new myString("ABCD").isLike("A "));
System.out.println("str=ABCD regex=A?? :"+new myString("ABCD").isLike("A??"));
System.out.println("str=ABCD regex=?BC? :"+new myString("ABCD").isLike("?BC?"));
System.out.println("str=ABCD regex=*B*D :"+new myString("ABCD").isLike("*B*D"));
System.out.println("str=ABCD regex=*BCD :"+new myString("ABCD").isLike("*BCD"));
System.out.println("str=ABCD regex=*A*B*D :"+new myString("ABcCD").isLike("*A*B*D")); ?? }

}

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Kotlin——關于字符串(String)
Java判斷中文的方法
JavaScript常用字符串函數(shù)
Java知識:判斷是否是回文
使用遞歸方法判斷回文
java正則表達式去掉string中的回車換行符空格
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服