Comparación de comodines DELPHI
Autor: Li Junyu correo electrónico: [email protected] o [email protected] o [email protected]
Se reconoce que DELPHI tiene funciones más potentes que VB, pero a veces no es tan conveniente como VB en algunas cosas pequeñas. Por ejemplo, existe SENDKEY () en VB, que puede simular fácilmente las teclas del teclado, pero es más complicado en DELPHI. Otro ejemplo es Hay LIKE en VB para implementar fácilmente comodines. Compare, pero no puedo encontrarlo en DELPHI. Por esta razón, cuando estoy en un estado libre y todavía tengo ganas, hago una función personalizada para realizar esta función, en caso de que no esté de humor para hacerlo. Algo tan pequeño nuevamente en caso de emergencia. Este tipo de programa pequeño es inútil en el estante. Es mejor sacarlo y dejar que emita algo de luz y calor.
El algoritmo del programa primero agrega '?' al final de la subcadena. * ', luego lea la subcadena, busque los caracteres entre los caracteres comodín en la subcadena, es decir, la subcadena en la subcadena, y luego busque en la cadena de origen para ver si contiene la subcadena en la subcadena. Todavía es muy difícil de implementar.
función isABClikeAX(abc,ax:string):boolean; //abc es la cadena fuente, ax es la subcadena
var
abcstart,axstart,abclength,axlength:entero;
endpartabc,endpartax,subax:cadena;
temp,abcwww,axwww:entero;
comenzar//aaa
temperatura:=0;
inicioabc:=1;
inicioax:=1;
hachawww:=1;
abcwww:=1;
abclongitud:=longitud(abc);
longitud del eje:=longitud(ax);
isabclikeax:=verdadero;
mientras que axstart<=axlength lo hace
comenzar//bbb
si ax[axstart]='?' entonces
comenzar
inc(inicioax);
inc(abcinicio);
si abcstart> abclength entonces
comenzar
isabclikeax:=falso;
romper;
fin;
continuar;
fin;
si ax[axstart]='*' entonces
comenzar
inc(inicioax);
temperatura:=1;
hachawww:=axstart;
abcwww:=abcstart;
continuar;
fin;
si no (ax[axstart] en ['?','*'] ) entonces
comenzar//ccc
endpartax:=copiar(ax,axstart,axlength-axstart+1)+'?*';
subax:=copiar(endpartax,1,min(pos('?',endpartax),pos('*',endpartax))-1);
axstart:=axstart+min(pos('?',endpartax),pos('*',endpartax))-1;
endpartabc:=copiar(abc,abcstart,abclength-abcstart+1);
si ((pos(subax,endpartabc)<>0) y (temp=1 )) o ((pos(subax,endpartabc)=1) y (temp=0)) entonces
comenzar //ddd
si temp=1 entonces temp:=0;
abcstart:=abcstart+(pos(subax,endpartabc)+longitud(subax)-1) ;
// axstart:=axstart+min(pos('?',endpartax),pos('*',endpartax))-1;
fin //ddd
más //ddd
comenzar //ddd
si temperatura = 0 entonces
comenzar
axstart:=axwww;
abcwww:=abcwww+1;
abcstart:=abcwww;
temperatura:=1;
continuar;
fin;
isabclikeax:=falso;
romper;
fin; //ddd
fin;//ccc
fin;//bbb
fin;//aaa
FUNCIÓN es como (abc, hacha: cadena): booleana;
comenzar
escomo:=esABCcomoAX(abc,ax);
fin;
FUNCIÓN tarjeta ancha (abc, hacha: cadena): booleano;
comenzar
tarjeta ancha:=isABClikeAX(abc,ax);
fin;
Preste atención a USES MATH, debido a que se usa MIN (), también puede usar la declaración IF para reemplazar MIN (), pero no es lo suficientemente claro.