Inicio > LotusScript , Diseñador de Notas > Utilice LotusScript Split / Ingreso al quitar la entrada desde una lista

Utilice LotusScript Split / Ingreso al quitar la entrada desde una lista

Hace poco estaba trabajando con las matrices de LotusScript. Cada elemento de la lista fue una cadena de texto. Yo tenía la necesidad de eliminar un elemento de la lista. Hay muchas maneras diferentes de hacer esto, y aquí es uno más.


Esta técnica toma los elementos de la matriz, a continuación, deja en blanco el que debe ser eliminado. Entonces se necesita toda la matriz y construye una cadena de texto larga fuera de él. A continuación, la cadena de texto es manipulada, y la cadena resultante se convierte de nuevo en una matriz. La nueva matriz tendrá la entrada en blanco eliminado. Obviamente, esta técnica se basa en el tamaño de la cadena de texto, por lo que no quiero hacer esto con grandes arreglos. Pero también se puede utilizar si deseas eliminar una entrada, o para entradas múltiples, desde la matriz de origen.

El concepto es que se crea una matriz variante con los valores y en blanco el valor de ser eliminados. Vamos a dar un ejemplo como punto de partida:
Valores Dim As Variant
Redim los valores (2)
valores (0) = "A"
valores (1) = "B"
valores (2) = "C"

(Obviamente, el código anterior es bastante ineficiente. Lo ideal sería que, en lugar de re-regulación y codificar los valores, que iba a venir de otro lugar, como un campo de varios valores en un documento).

A continuación, en blanco el valor o valores que se van a eliminar: los valores (2) = ""

(De nuevo, esto no sería en el código. El escenario más probable sería algo que el ser eliminado fue elegido de una lista).

A continuación, viene la verdadera carne del código. Aquí es donde la nueva matriz se construye, con todos los elementos en blanco eliminado.
Dim temp As String
temp = Ingreso (valores "
Mientras Instr (temp, "<> 0
temp = Strleft (temp, "&" y Strright (temp, "
Encaminarse a
Si la izquierda (temperatura, 3) = "Entonces temp = Strright (temp,"
Si la derecha (temperatura, 3) = "Entonces temp = Strleftback (temp,"
valores = Split (temp, "

La primera declaración que hace una larga cadena (mediante la instrucción de Ingreso con un separador sabe que no va a aparecer en cualquier parte de los elementos del arreglo que elegí tres "~" caracteres como separador de mis conocidos -. Puedes elegir otro si querías.

La siguiente sentencia es relevante si un elemento en un punto intermedio de la matriz se ha eliminado. Este elemento tendrá separadores consecutivos. En mi caso, "consecutivos" significa "dos grupos de tres". Así que mi declaración se ve por seis tildes consecutivos. Si usted tiene un separador diferente, este será de dos de los separadores consecutivos. El código reemplaza todas las apariciones consecutivas con una sola aparición. Así que si varios elementos fueron retirados de la mitad de la matriz, todos los espacios en blanco se eliminará en la matriz final.

Las siguientes dos declaraciones son pertinentes si el elemento primero o el último de la serie fue eliminado. Si el primer elemento se ha retirado, nuestra larga serie comenzará con el separador, por lo que debe ser ignorado. Si el último elemento se ha retirado, nuestra larga cadena que termina con la separación, por lo que debe ser ignorado.

Por último, tenemos una larga cadena. El separador no aparece al principio o al final, y no hay separadores consecutivos. Así que la cadena de tiempo puede ser dividido y los valores de la matriz repoblada. La serie ahora no tienen valores en blanco - todo lo que queda son los valores no estén en blanco de la matriz original.

Como he dicho antes, esto puede no ser la forma más eficaz de eliminar los valores de una matriz, y ciertamente no se debe utilizar para grandes series, pero es bastante rápido y utiliza métodos integrados LotusScript que hacer todo el trabajo.

Visto 9290 veces por 3292 espectadores

  1. Gnaus
    21 de octubre 2011 a las 14:38 | # 1

    ¿Por qué no utilizar fulltrim?
    FullTrim (matriz) se eliminarán todas las entradas vacías en una matriz.
    Se trata de LotusScript nativos y es mucho más rápido.

    La única situación en la que no recomendamos el uso FullTrim es la limpieza de las listas de nombres de cadena. porque también eliminan los espacios en blanco FullTrim duplicado, tengo algunos problemas tratando de extraer los documentos adjuntos, ya que algunos usuarios inteligentes, tiene algunos archivos attachement nombres como "Mi nombre de archivo que es taaan ooo oooo ooooo cool.doc" y el FullTrim se convierte en "Mi nombre de archivo que es taaan ooo oooo ooooo cool.doc "y si se intenta separar el nombre del fichero, el sistema no lo encontrará en su documento.

    Pero eso es muy raro y siempre y cuando usted sabe lo que hace exactamente FullTrim, que le ahorrará mucho tiempo y la manipulación de matrices.

    Saludos

  2. Gnaus
    21 de octubre 2011 a las 14:46 | # 2

    @ Gnaus
    El "inteligente" del sistema elimina los espacios en blanco extra que hemos añadido en la versión primera del nombre de archivo que estaba dando como ejemplo en este comentario.
    Sólo considere que el nombre de â € œMy archivo que es taaan ooo oooo ooooo cool.docâ € como primera versión de la vilename (i esperanza "& nbs p 'lo hace)

  1. Aún no hay trackbacks.