public class FindMethod {
private NotePad note;//璁頒簨鏈殑涓葷被
private String text;//瀹氫箟浠庤浜嬫湰鏂囨湰鍖哄煙浼犳潵鐨勬枃鏈?br />
private String mathe;//瀹氫箟鎮ㄦ墍鏌ヨ鐨勫瓧絎︿覆
private int ltext=0;//鏂囨湰鐨勯暱搴?br />
private int lmathe=0;//鏌ヨ瀛楃涓茬殑闀垮害
private char[] textc;//瀛楃鏁扮粍錛屼繚瀛樻枃鏈殑鍗曚釜瀛楃
private char[] mathec;//瀛楃鏁扮粍錛屼繚瀛樻煡璇㈢殑鍗曚釜瀛楃
private int[] index; //榪斿洖灝嗚鏌ユ壘鍒扮殑瀛楃涓叉垨瀛楃鎵鍦ㄨ浜嬫湰鏂囨湰鍖哄煙鐨勭儲寮?br />
private int buttonsize;
private boolean isBreak = false;//鏄惁闇瑕佸驚鐜?br />
public FindMethod(String text,String mathe,NotePad note) {
this.text=text;
this.mathe=mathe;
this.note=note;
ltext=text.length();
lmathe=mathe.length();
mathec=new char[lmathe];
textc=new char[ltext];
index=new int[lmathe];
for(int i=0;i<ltext;i++) {
textc[i]=text.charAt(i);
}
for(int i=0;i<lmathe;i++) {
mathec[i]=mathe.charAt(i);
}
}
public void findText() {
int z=0;
if(lmathe>ltext) {//濡傛灉瑕佹煡鎵劇殑瀛楃涓茬殑闀垮害澶т簬鏂囨湰鐨勯暱搴﹀垯娌℃湁鍖歸厤鐨勫唴瀹?br />
JOptionPane.showMessageDialog(note, "娌℃湁鍒版壘鍖歸厤鐨勫唴瀹癸紒");
}
else {
for(int i=0;i<ltext-lmathe+1;i++) {
z=i;
for(int j=0;j<lmathe;j++) {
if(mathec[j]==textc[z]) {
isBreak=true;
index[j]=z;
z++;
}
else{
isBreak=false;
index=new int[lmathe];
break;
}
}
if(isBreak==true)
break;
}
}
}
public int[] getIndex() {
return index;
}
}
鍏充簬findText()鏂規硶錛屽叾瀹炲氨鏄煡鎵劇畻娉曠殑鏍稿績銆傛瘮濡傛枃鏈負“12345”錛屼綘瑕佹煡鎵劇殑鏄?#8220;45”銆傞偅涔堣偗瀹氭槸闇瑕佹煡鎵?嬈★紝騫朵笖瑕佽繘琛屼袱嬈℃瘮杈冿紙姣旇緝鐨勫唴瀹規槸鏂囨湰鐨?4'涓庢煡鎵劇殑'4'錛屾枃鏈殑'5' 涓庢煡鎵劇殑'5'錛夈傚ソ浜嗚繖浜涗綘鐭ラ亾浜嗭紝閭d箞浣犱細鍙戠幇鍏朵腑鏈変釜瑙勫緥銆傚鏋滄枃鏈殑闀垮害鏄疦錛屾煡鎵劇殑鏂囨湰鐨勯暱搴︽槸M錛圢>=M錛夛紝鍒欐湁闇瑕佽繘琛?N-M)+1嬈℃煡璇紝騫朵笖榪涜M嬈℃瘮杈冦傚鏋滄瘮杈冩垚鍔熺殑璇濋偅涔坕sBreak灝變負true錛屽茍涓旇index榪欎釜鏁扮粍渚濇璧嬩笂姣旇緝鐨凪鐨勯暱搴︾殑绱㈠紩錛屽茍涓旀暟緇勭殑鑼冨洿鍦?lt;M錛屽鏋滃叾涓殑涓嬈℃瘮杈冨け璐ワ紝閭d箞isBreak灝變負false錛岃澶т綋寰幆鍦ㄦ墽琛岋紝澶т綋寰幆涔熷氨鏄湁澶氬皯嬈℃煡璇€傚ソ浜嗗ぇ浣撲篃灝卞畬浜嬩簡錛岀劧鍚庡埄鐢ㄨ繑鍥炵殑index鏁扮粍錛宨ndex[0]鍜宨ndex[index.length()-1]鍒嗗埆浠h〃瑕佸畾浣嶇殑璁頒簨鏈枃鏈尯鍩熺殑寮濮嬪拰緇撴潫鐨勭儲寮曞箋傜劧鍚庡埄鐢╦TextArea.select(index[0],index[index.length()-1]+1)鏂規硶鏉ュ畾浣嶆煡鎵懼埌鐨勫瓧絎︿覆銆?/p>
浠ヤ笂鐨勬柟娉曞彲鑳芥湁浜涢夯鐑︼紝浣嗘槸鎴戞劅瑙夋暣浣撶殑鎬濊礬榪樻槸鍙互鐨勶紝閫傚悎涓庢垜浠繖浜涜彍楦熴傚鏋滅湅涓嶆噦錛屽氨澶氱湅鍑犻亶錛岀悊瑙i偅涓寰嬨傚啀鐞嗚В涓嶄簡鍙互涓庢垜鑱旂郴錛岃阿璋€傚疄渚嬮檮浠跺湪http://www.itkay.com/?action=show&id=29鍙互涓嬭澆鍒?/p>