[DUDA] Obtener caracteres especificos de un string.
#1

Hola a todos, les dejare planteada esta duda espero me ayuden.

Tengo un string "Hola soy Randomize", pero quiero que solo quede la palabra "soy" por lo tanto debo eliminar "Hola" y "Randomize" del string o simplemente tomar "soy" їalguna idea de como hacerlo?.

La palabra "Hola" ocupa 5 espacios (contando el espacio despuйs de la palabra), luego la palabra "soy" que ocupa del espacio 6 hasta el 8 y la palabra "Randomize" ocupa desde el 9 hasta el 18 (contando el espacio antes de la palabra). Con esto sabemos que debemos tomar del 6 al 8 o eliminar del 1 al 5 y del 9 al 18.

Espero haberme explicado bien, gracias de antemano.
Reply
#2

strfind y strdel.

pawn Код:
//ejemplo
if(strfind("Are you in here?", "you", true) != -1) //returns 4, because the start of 'you' (y) is at index 4 in the string
{
    SendClientMessageToAll(0xFFFFFFFF, "I found you!");
}
pawn Код:
new string[42] = "We will delete everything apart from this";
strdel(string, 0, 37); // string is now "this"
Reply
#3

https://sampwiki.blast.hk/wiki/Strfind
https://sampwiki.blast.hk/wiki/strdel
Reply
#4

Gracias a ambos, ya tenia una idea de que usaria strdel, no tengo idea del strfind la verdad no lo entiendo, entonces analizo el cуdigo:
Quote:
new string[42]
Un string de 42 caracteres en este caso "We will delete everything apart from this".

Quote:
strdel(string, 0, 37)
Elimino hasta el carбcter numero 37 en este caso "We will delete everything apart from "
Ahora tengo una duda, їComo tomo la palabra "everything"? lo que intento es tomar una palabra que este en medio, no la ultima ni la primera, para eso usariamos 2 veces strdel.

pawn Код:
strdel(string, 0, 15); // elimina "We will delete "
strdel(string, 26, 41); // elimina "apart from "
Asн podrнa eliminar el texto alrededor y dejar los caracteres desde el 16 hasta el 25 que seria "everything" pero sucede que al testear solo me leyу el primer strdel el segundo lo ignora, entonces me arrojaba "everything apart from this" eliminando solo "We will delete " (el primer strdel), sugerencias?, otro mйtodo?.

Gracias de antemano!
Reply
#5

Si no me equivoco ya al usar primera vez strdel, cambia el tamaсo del string(Creo).

Para extraer palabras usa Strmid
Reply
#6

Estas intentando buscar una palabra en especifico? o solo buscas separar el "espacio" por ejemplo solo quieres separar la palabra que esta en 4to lugar, o precisamente tiene que ser la palabra everything?
Reply
#7

Quote:
Originally Posted by Daniel-92
Посмотреть сообщение
Estas intentando buscar una palabra en especifico? o solo buscas separar el "espacio" por ejemplo solo quieres separar la palabra que esta en 4to lugar, o precisamente tiene que ser la palabra everything?
No es una palabra en especifico es una palabra cualquiera definida por el usuario en un DIALOG_STYLE_INPUT por ejemplo.

Supongamos que el texto introducido en el dialog es "Palabra" entonces tendrнa un string de 8 chars y quiero tomar los chars 3 y 4 que serian "la" que esta en medio de "Pa" y "bra", їcomo lo harнa?.

Gracias de antemano.

EDIT

Lo logre, gracias Parka no habнa visto tu respuesta, lo que logre fue esto:

pawn Код:
new string[26]; // string 26 chars
strmid(string, "Muchas gracias Parka +rep", 15, 20); // chars desde 15-20
SendClientMessage(playerid, color, string);
De esa manera tome los caracteres del 15 al 20 y quedo solo "Parka".

La soluciуn estaba a nuestras narices, descripciуn de strmid: "Extracto de una serie de caracteres de una cadena." tema solucionado muchas gracias a todos.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)