Удалите все ненужные пробелы из строки JSON с помощью регулярного выражения (в AutoHotKey) - PullRequest
0 голосов
/ 11 января 2019

Как удалить ВСЕ ненужные пробелы из строки JSON (в AutoHotkey)?

Я предполагаю, что мне нужно использовать regExReplace с некоторым умным регулярным выражением , чтобы НЕ касаться пробелов, которые являются частью значений.

Простой пример:

До:

g_config := 
{ 
    FuzzySearch:{
        enable: true,
        keysMAXperEntry : 6,
        o = {
            keyString: "Hello World"
        }
    }
} ;

После: g_config:={FuzzySearch:{enable:true,keysMAXperEntry:6,o={keyString:"Hello World"}}};

По сути, я ищу способ минимизировать и упаковать строку как можно плотнее, не меняя никаких данных.

Сначала я попытался найти [\n]+ и заменить на "" (ничего). Разработано здесь:

https://www.regextester.com/?fam=106988 тут то же самое https://regex101.com/r/dZnHaZ/1

Лучшая попытка: тогда я снова использовал это

https://www.codeproject.com/Questions/1230349/Remove-extra-space-in-json-string чтобы: https://regex101.com/r/EYFHy9/4

Проблема: этот regEx также удаляет пробелы в значении. Это даже лучше сделать?

1 Ответ

0 голосов
/ 22 января 2019

В дополнение к тому, что упомянул @Aaron, приведен некоторый медленный AHK-код, который просматривает каждый отдельный символ и удаляет его, если это пробел или разрыв строки, кроме кавычек. Он начинается с вашего курсора и заканчивается, когда больше нечего копировать (точнее, через одну секунду).

;;; For speed? Maybe?? ...It's still slow  :(
ListLines Off
SetBatchLines , -1
SetKeyDelay , -1 , -1
SetMouseDelay , -1
SetDefaultMouseSpeed , 0
SetWinDelay , -1
SetControlDelay , -1
SendMode , Input

f1::
Loop
{
    clipboard := ""
    Send , +{right}^c
    ClipWait , 1
    If ErrorLevel
        Break
    bT := ( clipboard = """" ) ? !bT : bT
    Send , % ( !bT && ( clipboard = "`r`n" || clipboard = A_Space  || clipboard = A_Tab )) ? "{del}" : "{right}"
}
Return
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...