Hola,
No acabo de conseguir los siguiente, a ver si alguien me puede echar un cable por favor
tengo una linea de texto así
- SI8787 dsajdklsajdklsajkldaskj
- SI9898 jdksjadklsajdklsaj
SI8r98 nmskjdksjkds
Lo que quiero es copiar al clipboard los dos primeros caracters (SI) pero para ello tengo que evitar los espacios y el guion -
(entiendo que la solución seria copiar toda la linea al clipboard y copiar los dos primero caracteres alfanumericos, pero no hay manera)
Alguien me puede ayudar ?
Gracias
copiar primeros dos caracteres (letras) de una linea Topic is solved
Moderator: Flipeador
Re: copiar primeros dos caracteres (letras) de una linea
ejemplo
Code: Select all
e4x=
(Ltrim Join`r`n
- SI8787 dsajdklsajdklsajkldaskj
- SI9898 jdksjadklsajdklsaj
SI8r98 nmskjdksjkds
)
clipboard=
stringreplace,e4x,e4x,-,,all
Loop,parse,e4x,`n,`r
{
T=%A_LoopField%
t=%t%
stringmid,k,t,1,2
e .= k . "`r`n"
}
;msgbox,%e%
clipboard=%e% ;- save to clipboard
gosub,sendtonotepad
return
sendtonotepad:
pr=notepad.exe
sc=ahk_exe notepad.exe
IfWinNotExist,%sc%
{
Run, %pr%,,,pid1
scx:= "ahk_pid " . PID1
WinWait,%scx%
}
IfWinNotActive ,%scx%,,WinActivate,%scx%
WinWaitActive,%scx%
send,^v ;- send to notepad (SI)
clipboard=
return
;========================================================
Re: copiar primeros dos caracteres (letras) de una linea
Hola Daenerys,
Puedes tambien utilizar funciones nativas.
Puedes tambien utilizar funciones nativas.
Code: Select all
#NoEnv
input := "- SI8787 dsajdklsajdklsajkldaskj"
input := LTrim(input, "- ") ; remueve si procede los espacios y el guion desde la izquierda de la cadena de caracteres y pone al dia 'input' con la nueva cadena devuelta por LTrim
var := SubStr(input, 1, 2) ; rescata los dos primeros caracteres de 'input'
; clipboard := var ; pone al portepapeles el contenido de 'var'
MsgBox % var ; meustre el contenido de la variable 'var'
Re: copiar primeros dos caracteres (letras) de una linea
Muchismas gracias a los dos!
Re: copiar primeros dos caracteres (letras) de una linea
Hola A_AhkUser
Me ha ido fantastico tu ejemplo, muchas gracias ... haciendo pruebas con el , no he sido capaz de hacer una pequeña modificacion en esta linea
input := LTrim(input, "- ")
me gustaria añadir un "digit, number (he leido en documentacion que seria para indicar cualquier numero), o un simple numero) en el input ... algo como input := LTrim(input, "digit- ") o si no es posible, un simple 3, input := LTrim(input, "3- ")
¿ es posible ? porque probando "directamente" no me ha funcionado.
Gracias
Me ha ido fantastico tu ejemplo, muchas gracias ... haciendo pruebas con el , no he sido capaz de hacer una pequeña modificacion en esta linea
input := LTrim(input, "- ")
me gustaria añadir un "digit, number (he leido en documentacion que seria para indicar cualquier numero), o un simple numero) en el input ... algo como input := LTrim(input, "digit- ") o si no es posible, un simple 3, input := LTrim(input, "3- ")
¿ es posible ? porque probando "directamente" no me ha funcionado.
Gracias
Re: copiar primeros dos caracteres (letras) de una linea Topic is solved
Hola Daenerys,
Este codigo deberia funcionar:
O quizas ya es tiempo de que utilices el poder de las expresiones regulares:
documentacion:
Este codigo deberia funcionar:
Code: Select all
#NoEnv
input := "3- SI8787 dsajdklsajdklsajkldaskj"
; input := "- SI8787 dsajdklsajdklsajkldaskj"
input := LTrim(input, "1234567890- ") ; remueve si procede los espacios, los guiones y los digitos desde la izquierda de la cadena de caracteres y pone al dia 'input' con la nueva cadena devuelta por LTrim
var := SubStr(input, 1, 2) ; rescata los dos primeros caracteres de 'input'
; clipboard := var ; pone al portepapeles el contenido de 'var'
MsgBox % var ; muestre el contenido de la variable 'var'
Code: Select all
#NoEnv
/*
regex (expresiones regulares):
- ^ match si la expresión regular aparece al inicio del input - '^esc' match "esconder", al lo contrario, no match "descansar"
- \d match cualquiera sea la cifra (digito)
- ? el carácter precedente puede aparecer de forma opcional - 'a\d?b' match no solo "a3b", "a7b" sino tambien "ab"
- \s match sobre todo un espacio o una tabulación
\K quita todos los caracteres precedentes del match - 'hola\s?mun\Kdo' match no solo "holamundo" sino tambien "hola mundo" y devuelve en todos los casos "do"
. (punto) match un carácter sea cual sea
>>> https://www.autohotkey.com/docs/misc/RegEx-QuickRef.htm
*/
input := "3- SI8787 dsajdklsajdklsajkldaskj"
var := RegExMatch(input, "^\d?-\s\K..", match)
MsgBox % match
input := "- SI8r98 nmskjdksjkds"
var := RegExMatch(input, "^\d?-\s\K..", match)
MsgBox % match
Re: copiar primeros dos caracteres (letras) de una linea
Perfecto. me pongo a investigar con ello
muchisimas gracias
muchisimas gracias
Who is online
Users browsing this forum: No registered users and 6 guests