3 votos

Cómo eliminar sólo los caracteres entre paréntesis [ ] de una cadena

Así que he estado buscando durante horas cómo hacer esto a través de Applescript y no veo ningún post al respecto.

Básicamente, tengo la siguiente cadena:

@junior_cat23, [ID]-[E9B-Z8X-H1V-722]

Quiero que el script elimine sólo esta parte:

, [ID]-[E9B-Z8X-H1V-722]

Así que sólo me queda:

@junior_cat23

Estoy utilizando los "delimitadores de elementos de texto de AppleScript" pero el problema es que también eliminará los caracteres del texto que quiero conservar.

Este es el script que estoy utilizando:

set theName to "@junior_cat23, [ID]-[E9B-Z8X-H1V-722]"

tell application "Finder"

    -- Remove Characters

    set oldDelims to AppleScript's text item delimiters
    set the_strings_to_strip to {"[", "]", "-", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"}

    set the_files to theName
    repeat with a_file in the_files
        set the_name to theName
        repeat with I from 1 to count of the_strings_to_strip
            set AppleScript's text item delimiters to item I of the_strings_to_strip
            set the_text_items to text items of the_name
            set AppleScript's text item delimiters to ""
            set the_name to the_text_items as string
        end repeat
    end repeat

    -- Remove Preceding and Trailing Spaces in String

    set trimName to "echo \"" & the_text_items & "\" | xargs"
    set nameTrimmed to (do shell script trimName)
end tell

Obtengo el siguiente resultado:

"@_,"

Sólo quiero eliminar los caracteres del lado de los paréntesis y mantener los otros. Agradeceré una solución que no requiera un manejador ya que voy a utilizar el script con una aplicación que no acepta manejadores.

4voto

user3439894 Puntos 5883

Una de las razones por las que no te devolvían lo que querías es en algunos casos AppleScript no distingue entre mayúsculas y minúsculas, y el envoltorio de -- Remove Characters código en un considering case bloque maneja algunos de los problemas, pero no todos. Además, dado que tiene caracteres numéricos tanto en lo que quiere retener como en lo que no, entonces como está codificado actualmente elimina todos los caracteres numéricos.

Mientras que su actual código podría ser reelaborado, no me inclino a hacerlo, ya que tanto por los comentarios borrados como por los que aún existen, has omitido información vital en el PO. Dicho esto, voy a suponer por el momento que todos los objetivos cuerdas tendrá , [ ... ] o [ ... ] que hay que eliminar y lo siguiente sed comando maneja el ejemplo valor de theName variable en su OP y en los comentarios.

Así que si usted tiene:

set theName to "@junior_cat23, [ID]-[E9B-Z8X-H1V-722]"

O:

set theName to "@junior_cat23 @james_cat24 [ID]-[E9B-Z8X-H1V-722]"

Entonces:

do shell script "sed -E -e 's|\\[.*||' -e 's|,||g' -e 's|^[ ]+||' -e 's|[ ]+$||'<<<" & theName's quoted form

       - Sugerencia: Pase el ratón por encima y desplácese horizontalmente para ver el código completo.

Devuelve:

@junior_cat23

O:

@junior_cat23 @james_cat24

Sin ningún tipo de guía/tramitación espacios .


Comprender la do shell script y sed comandos :

  • do shell script -- Ejecuta un shell script utilizando el sh concha.
  • sed -- Editor de la corriente.
    • -E -- Interpretar las expresiones regulares como expresiones regulares extendidas (modernas) en lugar de expresiones regulares básicas (BRE's). La página del manual de re_format(7) describe completamente ambos formatos.
    • −e comando -- Anexar el comandos de edición especificado por el argumento del comando a la lista de comandos .
    • 's|\\[.*||' -- Elimina todo lo de la primera [ carácter hasta el final del línea .
    • 's|,||g' -- Elimina todo comas Si es que existen.
    • 's|^[ ]+||' -- Elimina todo espacios de vanguardia Si es que existen.
    • 's|[ ]+$||' -- Elimina todo espacios finales Si es que existen.
    • <<< -- Aquí Cuerdas - Una variante de aquí los documentos el formato es: [n]<<< word - La palabra se somete a la expansión de llaves, a la expansión de tildes, a la expansión de parámetros y variables, a la sustitución de comandos, a la expansión aritmética y a la eliminación de comillas. La expansión del nombre de la ruta y la división de la palabra no se realizan. El resultado se suministra como una sola cadena, con una nueva línea añadida, al comando en su entrada estándar (o descriptor de archivo n si n se especifica).
  • & theName's quoted form -- Añade la cita única valor de la variable theName hasta el final del línea de comandos de la sed comando en el do shell script comando para no ampliar ninguna caracteres especiales de la cáscara en el valor de la variable theName si es que existe.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X