Dividir una cadena en una lista de cadenas


Una función que divide una cadena en partes separadas por una subcadena
y devuelve las piezas en una dinámica de matriz de cadena
Dividir una cadena en una lista de cadenas
Las siguientes funciones dividir una cadena en partes separadas por una cadena y devuelva las partes en una lista de cadenas que se pueden pasar como tercer parámetro o creado por la función (y en este último caso, deberá ser liberado por el autor de la llamada):
interfaz
& nbsp & nbsp utiliza las clases
& nbsp & nbsp función SplitStrings(const str: string
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp const separador: string = ','
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Cadenas: TStrings = nil): TStrings
& nbsp & nbsp función AnsiSplitStrings(const str: cadena
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp const separador: string = ','
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Cadenas: TStrings = nil): TStrings
& nbsp & nbsp aplicación
& nbsp & nbsp utiliza sysutils
& nbsp & nbsp función SplitStrings(const str: string const separador: string
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Cadenas: TStrings): TStrings
& nbsp & nbsp // Rellenos de una lista de cadenas con las partes de 'str' separados por
& nbsp & nbsp // 'separador'. Si Nil es pasado en lugar de una lista de cadenas,
& nbsp & nbsp // la función crea un TStringList objeto que tiene a
& nbsp & nbsp // ser liberado por el autor de la llamada
& nbsp & nbsp var
& nbsp & nbsp & nbsp & nbsp n: integer
& nbsp & nbsp & nbsp & nbsp p, q, s: PChar
& nbsp & nbsp & nbsp & nbsp elemento: string
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp si las Cadenas = nil then
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := TStringList.Crear
& nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := Cadenas
& nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp p := PChar(str)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp s := PChar(separador)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp n := Largo(separador)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp repetir
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp q := StrPos(p, s)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si q = nil entonces q := StrScan(p, #0)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp SetString(punto, p, p - p)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado.Add(item)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp p := q n
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp hasta q^ = #0
& nbsp & nbsp & nbsp & nbsp excepto

& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elemento := '
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si las Cadenas = nil then Resultado.Libre
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elevar
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp final
& nbsp & nbsp función AnsiSplitStrings(const str: string const separador: cadena
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Cadenas: TStrings): TStrings
& nbsp & nbsp // Rellenos de una lista de cadenas con las partes de 'str' separados por
& nbsp & nbsp // 'separador'. Si Nil es pasado en lugar de una lista de cadenas,
& nbsp & nbsp // la función crea un TStringList objeto que tiene a
& nbsp & nbsp // ser liberado por el autor de la llamada
& nbsp & nbsp // versión ANSI
& nbsp & nbsp var
& nbsp & nbsp & nbsp & nbsp n: integer
& nbsp & nbsp & nbsp & nbsp p, q, s: PChar
& nbsp & nbsp & nbsp & nbsp elemento: string
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp si las Cadenas = nil then
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := TStringList.Crear
& nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := Cadenas
& nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp p := PChar(str)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp s := PChar(separador)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp n := Largo(separador)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp repetir
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp q := AnsiStrPos(p, s)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si q = nil entonces q := AnsiStrScan(p, #0)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp SetString(punto, p, p - p)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado.Add(item)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp p := q n
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp hasta q^ = #0
& nbsp & nbsp & nbsp & nbsp excepto
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elemento := '
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si las Cadenas = nil then Resultado.Libre
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elevar
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp final

Ejemplos:
procedure TForm1.Button1Click(Sender: TObject)
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp SplitStrings(Edit1.Texto, ', ', ListBox1.Los elementos)
& nbsp & nbsp final
& nbsp & nbsp procedure TForm1.Button2Click(Sender: TObject)
& nbsp & nbsp var
& nbsp & nbsp & nbsp & nbsp Partes: TStrings
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp Partes := nil
& nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Partes := SplitStrings(Edit1.Texto, ', ')
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ShowMessage('Primera parte es '' Partes[0] ''')
& nbsp & nbsp & nbsp & nbsp finalmente
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Partes.Libre
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp final

Se puede ver un ejemplo del uso de una matriz dinámica en lugar de un Fconnectionlog en un artículo separado.









Dividir una cadena en una lista de cadenas


Dividir una cadena en una lista de cadenas : Multi-millones de consejos para hacer su vida mas facil.


Una funcion que divide una cadena en partes separadas por una subcadena
y devuelve las piezas en una dinamica de matriz de cadena
Dividir una cadena en una lista de cadenas
Las siguientes funciones dividir una cadena en partes separadas por una cadena y devuelva las partes en una lista de cadenas que se pueden pasar como tercer parametro o creado por la funcion (y en este ultimo caso, debera ser liberado por el autor de la llamada):
interfaz
& nbsp & nbsp utiliza las clases
& nbsp & nbsp funcion SplitStrings(const str: string
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp const separador: string = ','
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Cadenas: TStrings = nil): TStrings
& nbsp & nbsp funcion AnsiSplitStrings(const str: cadena
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp const separador: string = ','
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Cadenas: TStrings = nil): TStrings
& nbsp & nbsp aplicacion
& nbsp & nbsp utiliza sysutils
& nbsp & nbsp funcion SplitStrings(const str: string const separador: string
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Cadenas: TStrings): TStrings
& nbsp & nbsp // Rellenos de una lista de cadenas con las partes de 'str' separados por
& nbsp & nbsp // 'separador'. Si Nil es pasado en lugar de una lista de cadenas,
& nbsp & nbsp // la funcion crea un TStringList objeto que tiene a
& nbsp & nbsp // ser liberado por el autor de la llamada
& nbsp & nbsp var
& nbsp & nbsp & nbsp & nbsp n: integer
& nbsp & nbsp & nbsp & nbsp p, q, s: PChar
& nbsp & nbsp & nbsp & nbsp elemento: string
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp si las Cadenas = nil then
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := TStringList.Crear
& nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := Cadenas
& nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp p := PChar(str)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp s := PChar(separador)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp n := Largo(separador)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp repetir
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp q := StrPos(p, s)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si q = nil entonces q := StrScan(p, #0)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp SetString(punto, p, p - p)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado.Add(item)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp p := q n
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp hasta q^ = #0
& nbsp & nbsp & nbsp & nbsp excepto

& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elemento := '
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si las Cadenas = nil then Resultado.Libre
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elevar
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp final
& nbsp & nbsp funcion AnsiSplitStrings(const str: string const separador: cadena
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Cadenas: TStrings): TStrings
& nbsp & nbsp // Rellenos de una lista de cadenas con las partes de 'str' separados por
& nbsp & nbsp // 'separador'. Si Nil es pasado en lugar de una lista de cadenas,
& nbsp & nbsp // la funcion crea un TStringList objeto que tiene a
& nbsp & nbsp // ser liberado por el autor de la llamada
& nbsp & nbsp // version ANSI
& nbsp & nbsp var
& nbsp & nbsp & nbsp & nbsp n: integer
& nbsp & nbsp & nbsp & nbsp p, q, s: PChar
& nbsp & nbsp & nbsp & nbsp elemento: string
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp si las Cadenas = nil then
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := TStringList.Crear
& nbsp & nbsp & nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado := Cadenas
& nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp p := PChar(str)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp s := PChar(separador)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp n := Largo(separador)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp repetir
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp q := AnsiStrPos(p, s)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si q = nil entonces q := AnsiStrScan(p, #0)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp SetString(punto, p, p - p)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Resultado.Add(item)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp p := q n
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp hasta q^ = #0
& nbsp & nbsp & nbsp & nbsp excepto
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elemento := '
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si las Cadenas = nil then Resultado.Libre
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp elevar
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp final

Ejemplos:
procedure TForm1.Button1Click(Sender: TObject)
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp SplitStrings(Edit1.Texto, ', ', ListBox1.Los elementos)
& nbsp & nbsp final
& nbsp & nbsp procedure TForm1.Button2Click(Sender: TObject)
& nbsp & nbsp var
& nbsp & nbsp & nbsp & nbsp Partes: TStrings
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp Partes := nil
& nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Partes := SplitStrings(Edit1.Texto, ', ')
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp ShowMessage('Primera parte es '' Partes[0] ''')
& nbsp & nbsp & nbsp & nbsp finalmente
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Partes.Libre
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp final

Se puede ver un ejemplo del uso de una matriz dinamica en lugar de un Fconnectionlog en un articulo separado.


Dividir una cadena en una lista de cadenas

Dividir una cadena en una lista de cadenas : Multi-millones de consejos para hacer su vida más fácil.
Recommander aux amis
  • gplus
  • pinterest

Comentario

Dejar un comentario

Clasificación