función split en delphi
Hola a todos.
Que función es la que dado un string con caracter separador me devuelve un array. Como la función split de PHP...? Gracias... Chaooooo |
Hola:
No me suena una función con ese nombre, pero imagino que sería algo así (dices que devuelve un array, supongo que te refieres a un string, que es un array of char): Código:
function DelphiSplit (const s: string; SepChr: Char) : String; |
Una opción sería usar listas de cadenas y luego vaciarla al arreglo:
Código:
var pd: Este mètodo no será tan potente como el de PHP pues aquí el separador debe ser un caracter mientras que en PHP me parece que puede ser una cadena. |
hola, teniendo la misma necesidad, y buscando en el foro fue que encontré esta "función split en delphi". Lo probé y me funcionó. Pero siempre y cuando la Cadena no contenga espacios es decir
, tomando en cuenta los siguentes valores: Cita:
Arreglo[0]=>'0123' Arreglo[1]=>'45670' Arreglo[2]=>'108' Arreglo[3]=>'4837' No se supone que debiese quedar asi?: Arreglo[0]=>''0123 45670' Arreglo[1]=>'108 4837' o no?...o entendí mal? |
Función de Split
Nota: Esta función de Split no funciona con un Separador de varios Caracteres pero funciona muy bien con uno sólo: ----------------------------------------------------------- // 1er Paso Declaras el Arreglo en la cabecera de tu .pas Type TArreglo = array of String; ------------------------------------------------------- // 2o Paso - Copias la siguiente función en tu .pas dentro del cuerpo de tu programa Function Split (cad : String; separador : string): TArreglo; var tam, t, i, j : integer; arr : TArreglo;//array of string; begin t:=0; j:=0; tam := StrLen(PChar(cad)); for i:=0 to tam -1 do begin if cad[i]=separador then t:= t+1; end; SetLength(arr, t+1); for i:=1 to tam do begin if cad[i]<>separador then begin arr[j] := arr[j]+cad[i]; end else begin j:= j+1; end; end; Result := arr; End; --------------------------------------------------- // 3er Paso - Llamar a la Función arrFileName := split(strCadenaAEditar, '\'); Donde : arrFileName la Declaras como de tipo "TArreglo", strCadenaAEditar es la cadena que quieres separar, y '\' es el caracter separador. |
Split
Código:
Function Split(enumeracion : string): TStringList; |
Está bien, LeonelGisuk. Lo único, dejar claro que después hay que destruir (Free) el objeto que se crea una vez que ya no se necesite.
|
¿Porqué no con ExtractStrings()?
Puse una respuesta al mismo problema en otro thread, como no tengo permisos aún para postear enlaces, replico mi comentario:
Espero sirva. Saludos. |
ahora Maquina solucionado el Split
la llamada var Arreglo: TStringList; begin Arreglo:= TStringList.Create; Split(',',string, Arreglo); ... .. . procedure Split(const Delimiter: Char; Input: string; const Strings: TStrings); begin Assert(Assigned(Strings)); Strings.Clear; input:='|' + StringReplace(Input, Delimiter, '| |', [rfReplaceAll])+'|'; Strings.Delimiter := ' '; Strings.QuoteChar := '|'; Strings.DelimitedText := Input; end; Los Maquinas de chile |
Hola Los maquinas y bienvenidos a Club Delphi :)
Como a todos los que se inician te invitamos a que leas nuestra guía de estilo. Una sugerencia, cuando incluyas código en tus mensajes, utiliza TAG's para darle mas legibilidad. Esta imágen explica el uso: Saludos. |
La franja horaria es GMT +2. Ahora son las 08:12:06. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi