Как отсортировать список строк, используя регулярные выражения в дартс? - PullRequest
0 голосов
/ 27 апреля 2020

По сути, я ищу другой способ сортировки списка строк, кроме .sort (). Использование этого для моих целей дает мне type '_SecItem' is not a subtype of type 'Comparable<dynamic>' Я пытаюсь отсортировать список строк по числовым числам перед строками. , Что-то вроде:

List<String> hi = ['05stack', '03overflow', '01cool','04is', '02uToo'];

на это:

['01cool', '02uToo', '03overflow', '04is', '05stack']

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

С функцией извлечения числа типа

int extractNumber(String srt){
  RegExp regex = new RegExp(r"(\d+)");
  return regex.allMatches(srt).toList().map((m){
    return srt.substring(m.start, m.end);
  }).toList().map((v)=>int.parse(v)).first;
}

void main(){
  List<String> test = ['05stack', '03overflow', '01cool','04is', '02uToo'];
  test.sort((a, b)=>extractNumber(a)>extractNumber(b) ? 1 : -1);
  print(test);
}
0 голосов
/ 27 апреля 2020

Я могу легко сортировать, используя sort ().

var List<String> hi = ['05stack', '03overflow', '01cool', '04is', '02uToo'];
  hi.sort();
  hi.forEach((element) {
    print(element);
  });

он печатает:

01cool
02uToo
03overflow
04is
05stack

Я не получаю никакой ошибки

type '_SecItem' is not a subtype of type 'Comparable<dynamic>'
...