Clipper/FiveWin - SUBSTR

 
Vista:

SUBSTR

Publicado por LeTchev (9 intervenciones) el 20/10/2002 15:24:34
Estimados colegas,

Ud. conozces otro camino, más corto, para search/replace una substr()?

Esto es el modesto ejemplo que escrebí,


suffix='ing'
infinitive_form='e '

suffix2='ains'
canonical_form='ain '

suffix3='ions'
canonical_form='ion '

go top

DO WHILE .NOT. EOF()
locate rest for wordlist suffix$wordlist
replace wordlist with strtran(wordlist,suffix,infinitive_form)
continue
enddo


go top

DO WHILE .NOT. EOF()
locate rest for wordlist suffix2$wordlist
replace wordlist with strtran(wordlist,suffix2,canonical_form)
continue
enddo

go top

DO WHILE .NOT. EOF()
locate rest for wordlist suffix3$wordlist
replace wordlist with strtran(wordlist,suffix3,canonical_form)
continue
enddo

y así por adelante...

A la espera de su contestación,

Gracias y saludos,

Edmond LeTchev

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:SUBSTR

Publicado por Daniel (7 intervenciones) el 21/10/2002 04:54:46
Intentá con lo siguiente y suerte.

suffix='ing'
infinitive_form='e '

suffix2='ains'
canonical_form1='ain '

suffix3='ions'
canonical_form2='ion '

go top
DO WHILE !EOF()
if at(suffix,wordlist)<>0
replace wordlist with strtran(wordlist,suffix,infinitive_form)
endif

if at(suffix2,wordlist)<>0
replace wordlist with strtran(wordlist,suffix2,canonical_form1)
endif

if at(suffix3,wordlist)<>0
replace wordlist with strtran(wordlist,suffix3,canonical_form2)
endif
skip
enddo

Saludos desde Rosario, Argentina
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SUBSTR

Publicado por LeTchev (9 intervenciones) el 21/10/2002 15:08:48
Estimado Daniel,

Yo quiero mucho bien a Argentina, una tierra que me proporcionó momentos inolvidables en mi vida, esp. en Buenos Aires.

Por favor, tu ejemplo es muy simple, como yo gustaría de ver.

Para saber que suffix? siempre es la parte final de la palabra,
es posible utilizarmos la seguiente función ?

FUNCTION ends(s)
LOCAL l, o, i
l = len(s)
o = k-l+1
if (o < 1) && was 0
return .F.
endif
for i = 0 to l
if b[o+i] != substr(s,i,1))
return .F.
endif
endfor
this.j = k-l
return .T.
ENDFUNC

ASÍ:

replace all worlist with strtran(wordlist,Ends(suffix),Ends(infinitive_form))

o ASÍ:

suffix=ENDS('ing')
infinitive_form=ENDS('e')

replace all worlist with strtran(wordlist,suffix,infinitive_form)

Gracias otra vez,

Saludos desde Brasil, el campeón de los ´árbitros´

LeTchev







Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar