https://foro.gambas-es.org/viewtopic.php?f=1&t=7158
-----------------------------------
Shell
Jueves, 20 Septiembre 2018, 14:11

¿ Existe Una Propiedad Como "index" En Cadenas O Arrays ?
-----------------------------------
Buenas!.

Os estaréis acordando de Listbox al nombrar la propiedad "index". :)

Estoy repasando algo en Python con los indices en las cadenas para mostrar algo parecido en Gambas.

Aunque no lo veo muy viable. La propiedad index mostraría la "[b]primera coincidencia[/b]", cosa muy justa, ya que
el carácter, cadena se puede repetir. Quiero decir, que si tuviéramos una cadena, se podría decir
con index que lugar ocupa dentro de la cadena un carácter. Al igual que un array ( de esto no me acuerdo si existe, creo que no ),
es más parecido a cosas del Listbox. :-D

Cuando jugamos con cadenas, creo que seria más cómodo decir hasta el lugar que se encuentra "[b]n[/b]" que el uso de números.
Pero claro y si hay más "enes"...de poco valdría. Bueno, se podría hacer cálculos.

De nuevo bucles...

Saludos


-----------------------------------
shordi
Jueves, 20 Septiembre 2018, 15:52

Re: ¿ Existe Una Propiedad Como "index" En Cadenas O Arrays ?
-----------------------------------
La función instr tiene tres parámetros. El tercero sirve de el index que tú mencionas... más o menos...


-----------------------------------
vuott
Jueves, 20 Septiembre 2018, 17:35

Re: ¿ Existe Una Propiedad Como "index" En Cadenas O Arrays ?
-----------------------------------
[quote user="Shell" post="43131"]Al igual que un array ( de esto no me acuerdo si existe, creo que no )[/quote]

Es el Método " [i].Find( )[/i] " del objeto Array.

[i]Exemplum[/i]:
[color=white]p[/color]http://gambaswiki.org/wiki/comp/gb/string[]/find


-----------------------------------
Shell
Viernes, 21 Septiembre 2018, 00:47

Re: ¿ Existe Una Propiedad Como "index" En Cadenas O Arrays ?
-----------------------------------
Shordi:

[quote]
La función instr tiene tres parámetros. El tercero sirve de el index que tú mencionas... más o menos...
[/quote]

Es algo que he usado y no recordaba cuando pregunté.  :roll: 

Tenemos tanto para que busque por el comienzo: [b]Instr[/b]
Como para que busque desde el final: [b]RInstr[/b]

Ahora bien. ¿ Qué pasa si se repite más de una vez el carácter en la cadena  ?..  :razz: 

[code linenumbers=false syntax=gambas]
Public Sub Main()
  
  Dim cadena As String
  Dim posiciones As Integer[]
  
  cadena = "palabra"
  
  posiciones = ObtenerIndicesCaracterEnCadena(cadena, "a")
  
End

Public Function ObtenerIndicesCaracterEnCadena(cadena As String, letra As String) As Integer[] ''Obtiene los indices de un caracter que se repite en una cadena
  
  Dim indices As New Integer[]
  Dim posicion As Integer
  
  posicion = InStr(cadena, letra)    
  While posicion > 0 And posicion <= String.Len(cadena)
    indices.Add(posicion)      
    posicion = InStr(cadena, letra, posicion + 1)
  Wend     
  Return indices
  
End
[/code]

Resultado:
[quote]
[ 2, 4, 7 ]
[/quote]

Vuott:

[quote]
Es el Método " .Find( ) " del objeto Array.
[/quote]

Y al igual se puede hacer un ejemplo similar al de arriba pero en un array de cadenas.

Son olvidos que tengo. Bueno esta recordarlo. Y bueno seria que tengamos ejemplos nuestros con estas cosas.  :sad: 

Saludos


-----------------------------------
shordi
Domingo, 23 Septiembre 2018, 09:49

Re: ¿ Existe Una Propiedad Como "index" En Cadenas O Arrays ?
-----------------------------------
Dice Benoit:
[quote]Hola,

Desde el último commit, permití que las cadenas se usaran como objetos.

Este no es azúcar sintáctico, ya que está completamente implementado en el
Interprete.

Entonces, si S es una cadena, puedes hacer lo siguiente:

S [N] para obtener el carácter N-ésimo de la cadena. ¡Tener cuidado! Al contrario de las
subrutinas String, la primera posición de personaje es cero. Es como usar el
cadena como una matriz de caracteres.

S [N, L] es un equivalente de Mid $ (S, N + 1, L).

S.Len devuelve la longitud de la cadena.

S [] solo trata con la posición de bytes, no puede manejar UTF-8.

Esa nueva sintaxis es más lenta que llamar directamente a Mid $ () y Len (), pero yo
no creas que notaremos la diferencia.

Tal vez agregue una propiedad S.Max para devolver la longitud menos uno, pero
No creo que implemente todas las rutinas de cadenas como métodos de objetos.
[/quote]
O sea, que ahora sí tienes lo que querías, Shell...


-----------------------------------
Shell
Domingo, 23 Septiembre 2018, 13:08

Re: ¿ Existe Una Propiedad Como "index" En Cadenas O Arrays ?
-----------------------------------
Shordi:

[quote]
O sea, que ahora sí tienes lo que querías, Shell...
[/quote]

 [img]https://foro.gambas-es.org/files/images/768/144amarillos_1537704054_271556.gif[/img] 

Entonces, ¿ puede que veamos esto en la próxima versión ?.
Vaya cambio!.  :shock: 

Gracias por molestarte en traducir y mostrar la información.

Saludos


-----------------------------------
shordi
Domingo, 23 Septiembre 2018, 13:12

Re: ¿ Existe Una Propiedad Como "index" En Cadenas O Arrays ?
-----------------------------------
[quote user="Shell" post="43164"]Shordi:

[quote]
O sea, que ahora sí tienes lo que querías, Shell...
[/quote]

 [img]https://foro.gambas-es.org/files/images/768/144amarillos_1537704054_271556.gif[/img] 

Entonces, ¿ puede que veamos esto en la próxima versión ?.
Vaya cambio!.  :shock: 

Gracias por molestarte en traducir y mostrar la información.

Saludos[/quote]

Las gracias al traductor de google...  :mryellow:  :mryellow:  :mryellow:


