Cita:
Empezado por MAXIUM
.. Creo que la expresión correcta seria la siguiente:
Código Delphi [-]
function QuitarLetras(const S: string) : string;
begin
Result := TRegEx.Replace(S, '[^1234567890]', '', [roIgnoreCase, roMultiLine]);
end;
|
Ambas expresiones terminan entregando el mismo resultado. Aunque, esta que propones es mas eficiente!
Métricas de Regex101:
Expresión:
'([a-z])*
Pasos: 16.317
Tiempo: 36.7 ms
Link:
https://regex101.com/r/HveDfl/1
Expresión:
[^1234567890]
Pasos: 5.308
Tiempo: 28.6 ms
Link:
https://regex101.com/r/N5WzUR/1
Pero si la modificamos un poco. Se obtiene una mas corta que reduce un poco el tiempo:
Expresión:
[^0-9]
Pasos: 5.308
Tiempo:
22.6 ms
Link:
https://regex101.com/r/nBVQg9/1
Código Delphi
[-]
function QuitarLetras(const S: string) : string;
begin
Result := TRegEx.Replace(S, '[^0-9]', '', [roIgnoreCase, roMultiLine]);
end;
Cita:
Empezado por MAXIUM
Por otra parte ¿por qué S es declarada constante? 
|
¡Bueno! En realidad lo copié del primer ejemplo, pero según la documentación. Cuando se trabaja con parámetros constantes de tipo string, permite al compilador optimizar el código.
Cita:
Constant Parameters
A constant (const) parameter is like a local constant or read-only variable. Constant parameters are similar to value parameters, except that you cannot assign a value to a constant parameter within the body of a procedure or function, nor can you pass one as a var parameter to another routine. (But when you pass an object reference as a constant parameter, you can still modify the object's properties.)
Using const allows the compiler to optimize code for structured - and string-type parameters. It also provides a safeguard against unintentionally passing a parameter by reference to another routine.
Here, for example, is the header for the CompareStr function in the SysUtils unit:
function CompareStr(const S1, S2: string): Integer;
Because S1 and S2 are not modified in the body of CompareStr, they can be declared as constant parameters
|
http://docwiki.embarcadero.com/RADSt...eters_(Delphi)