2 votos

Regex para sustituir los caracteres ingleses por los árabes en QGIS

Tengo un reto para reemplazar el contenido en inglés que viene de la anotación de AutoCAD a los caracteres árabes, las fuentes árabes para AutoCAD como xarab almacenar el contenido árabe como Inglés, sólo tengo que reemplazar el contenido en inglés al árabe por la calculadora de campo en QGIS.

EJEMPLO: Contenido en inglés de AutoCAD: lk'rm s:kdm Debería aparecer en la pantalla a:

2voto

chhh Puntos 1154

La calculadora de campos de uso, primero define un key:value mapa con valores coincidentes para los caracteres laticos/arabeos. Algo así (aquí demostrado con caracteres cirílicos, ya que no conozco los árabes):

map('a','','b','','d','')

meaning:
a -> 
b -> 
d -> 

Entonces puedes crear un array con todos los caracteres de tus cadenas de entrada y para cada uno buscar el correspondiente value a este key carácter. Como utilizamos una matriz, tenemos que volver a convertirla en una cadena y eliminar las comas de separación.

Así que la expresión completa se parece a lo que sigue, donde la línea 6 contiene el mapa que debes adaptar. text en las líneas 4 y 7 es la cadena de entrada.

Como opción, puede definir las líneas 5 y 6 (el mapa clave:valor con caracteres coincidentes) como una variable de proyecto, llamémosla translit y luego sustituir las líneas 5/6 de la siguiente expresión por eval(@translit) (véase la segunda captura de pantalla).

replace (
    array_to_string (
        array_foreach (
            generate_series (1,length(text)),
            map_get( 
                map('a','','b','','d','','e','','g','','ž','','v','','z','','i','','j','','p','','P','','r','','s','','o','','L','','n','','B','','R','','m','','M',''),
                substr( text, @element,1)
            )
        )
    ),
    ',',
    ''
)

enter image description here

enter image description here

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia 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