Как вернуть ключи groovy map

#groovy

#groovy

Вопрос:

У меня есть карта атрибутов, переданная в taglib, и я хочу найти в них только те ключи, которые начинаются с «data-«.

Пример: в моем файле gsp я использую это

 <me:myInput name="my-name" id="my-name" data-minlength="5" data-len="1"/>
  

taglib

 static namespace = "me"
Closure myInput = { attrs ->
  def dataMap = attrs.keySet()
}
  

Таким образом, вышесказанное добавит все ключи в карту данных. Я просто хочу, чтобы перед ними были добавлены те, у которых есть ‘data-‘, а не другие.

Я также хочу удалить «данные», прежде чем сохранять их в карте данных. В конечном итоге карта данных должна выглядеть следующим образом.

 dataMap = ['required', 'len']
  

Кто-нибудь знает, как я бы поступил с этим в groovy.

Комментарии:

1. То, что вы показываете как «DataMap», вообще не карта, а список. Я изо всех сил пытаюсь разобраться в вашем вопросе. Кроме того, ваша инициализация map вообще не компилируется. Хммм.

2. Извините, позвольте мне попытаться объяснить это подробнее.

3. Исходный код карты компилируется, если вы просто удалите фигурные скобки.

4. Вопрос имеет смысл для меня. dataMap это своеобразное имя для переменной, может matchingKeys быть, или что-то в этом роде имеет больше смысла, но вопрос в том виде, в каком он написан, является последовательным.

Ответ №1:

Есть несколько способов, которыми вы могли бы это исправить.

 matchingKeys = map.keySet().findAll { it.startsWith('data-') }.collect { it[5..-1] }

matchingKeys = map.keySet().findAll { it.startsWith('data-')}*.getAt([5..-1])

matchingKeys = map.keySet().findAll { it.startsWith('data-') }.collect { it - 'data-' }
  

Я надеюсь, что это поможет.