tl;dr
: las expresiones regulares son complicadas.
Mi solución a medias: buscar \R y hacer clic en "buscar siguiente" o "reemplazar (con espacio)".
No puedo recordar exactamente (¡ayúdenme en los comentarios!), pero alguien dijo algo así como: "Si tienes un problema, usa expresiones regulares. ¡Entonces tendrás 2 problemas!". ¡Y creo que hay que comenzar los blogs de RegEx con una cita así! (¡No hice las reglas!
😉
)
Así que tengo un problema o vamos a llamarlo un deseo: quiero
definiciones de métodos con un buen aspecto, sin saltos de línea innecesarios y sin lastimarme los dedos
al editar manualmente.
Afortunadamente, puedo esperar a que SAP proporcione algo para lograr eso en el futuro, pero lo quiero ahora.
Ya cuando escribía mis preguntas, pensé "bueno, las expresiones regulares deberían poder hacer eso, ¿verdad?". Te mostraré hasta dónde llegué, y estaré feliz si juntos podemos ir aún más lejos.
Así que empecemos con un ejemplo de código no limpio:
METHODS check_for_delivery_reference
RAISING
zclewm_cx_input_false.
METHODS check_is_available_stock_cat
RAISING
zclewm_cx_input_false.
METHODS check_todo_final_storage
RAISING
zclewm_cx_input_false.
METHODS check_for_open_wt.
METHODS do_something_xy
IMPORTING
iv_param TYPE abap_bool.
Ten en cuenta que, esta vez, se trata solo de los saltos de línea: quiero eliminar algunos de ellos.
La lógica es: si hay un salto de línea que no es precedido por un ".", elimina ese salto de línea.
(nota: "eliminar" también se puede escribir como "reemplazar con nada (o con espacio)". )
Entonces, ¿qué necesitamos?
\R -> cualquier carácter de nueva línea.
[] -> una lista de caracteres [abc] significa cualquier carácter que sea a, b o c.
^ -> negación de la lista de caracteres [^abc] significa cualquier carácter que no sea ni a ni b ni c.
Entonces esto es lo que buscamos:
[^.]\R
Un carácter, que no sea un ".", seguido de un salto de línea.
En teoría, esto debería funcionar, pero en realidad, no lo hace realmente, ¡hay algunos problemas!
Intento ser breve, solo mencionando 2 de ellos que entiendo:
1. Coincidirá con lo que dice "un carácter no-"." seguido de un salto de línea" - y la búsqueda de AdT (o Notepad++) lo resaltará y lo hará disponible para reemplazar / reemplazar todo.
Pero en realidad, eso no es lo que quiero: solo quiero reemplazar el salto de línea, NO también el carácter que lo precede.
METHODS check_for_delivery_reference
RAISING
METHODS check_for_delivery_reference RAISING
METHODS check_for_delivery_referenc RAISING
2. Un salto de línea también es un carácter no ".", por lo que coincidirá con un salto de línea seguido de un salto de línea, sin importar si hay un . delante o no.
(3. no seguro: ¿es [cr][lf] solo uno o dos caracteres de nueva línea? )
Entonces, como a menudo, no es tan fácil.
Lo que terminé haciendo, para ahorrarme al menos el ciclo [clic del mouse+y+arrastrar para resaltar, + espacio para eliminar]: es esto: solo busco el salto de línea \R y luego hago clic para reemplazarlo con espacio o "buscar siguiente".
Conclus