Я пытаюсь проанализировать выражение в элементе . Я хочу сделать преобразование точек в JavaScript. < /P>
Мой первый шаг - проанализировать выражение пути. Я занимался этим с помощью корпорации (см. Ниже). Код, который я не веду, как ожидал. Он находит только последнее событие каждой группы. Как лучше всего заставить эту работу? Возможно ли с помощью Regexp? Если это единственный способ, которым Regexp может вести себя в JavaScript, я полагаю, что мне приходится соответствовать первой регуляции, а затем проведите оставшуюся основание с обычным JavaScript. Но я хотел бы сначала узнать, возможно ли это с другим кодом на основе Regexp. Я хотел бы научиться пользоваться Regexp лучше.
let path = `M4,24
L4,23
Q12,23,12, 9
L14, 9
C15, 3,25, 3,26,9
L28,9
Q28,23,36,23
L36,24
Z`
// This function does is dysfunctional
function parsePath(path) {
// To simplify the match RegExp, I simplify the path string first:
// All comma's and all whitespace characters are simplified to a simple separator space.
let path2 = path.replaceAll(/[,\s]+/g, ' ')
let rgx = /([A-Za-z])(?:(\d+)\s+)*/g
let matches = [...path2.matchAll(rgx)].map(x => {
return [x[1], x.slice(2)]
})
return matches
}
console.log(parsePath(path))
// OUTPUT:
[
[ 'M', [ '24' ] ],
[ 'L', [ '23' ] ],
[ 'Q', [ '9' ] ],
[ 'L', [ '9' ] ],
[ 'C', [ '9' ] ],
[ 'L', [ '9' ] ],
[ 'Q', [ '23' ] ],
[ 'L', [ '24' ] ],
[ 'Z', [ undefined ] ]
]
// EXPECTED AND DESIRED OUTPUT:
[
[ 'M', [ '4', '24' ] ],
[ 'L', [ '4', '23' ] ],
[ 'Q', [ '12', '23', '12', '9' ] ],
// ...
]
Подробнее здесь: https://stackoverflow.com/questions/796 ... javascript
Как получить все совпадения для повторной группы в корпорации в JavaScript? ⇐ Javascript
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение