Home > other >  split the string into equal parts flutter
split the string into equal parts flutter

Time:03-04

There is a string with random numbers and letters. I need to divide this string into 5 parts. And get List. How to do it? Thanks.

String str = '05b37ffe4973959c4d4f2d5ca0c1435749f8cc66';

Should work:

List<String> list = [
  '05b37ffe',
  '4973959c',
  '4d4f2d5c',
  'a0c14357',
  '49f8cc66',
];

CodePudding user response:

I know there'a already a working answer but I had already started this so here's a different solution.

String str = '05b37ffe4973959c4d4f2d5ca0c1435749f8cc66';
 List<String> list = [];

 final divisionIndex = str.length ~/ 5;

 for (int i = 0; i < str.length; i  ) {
    if (i % divisionIndex == 0) {
    final tempString = str.substring(i, i   divisionIndex);
       list.add(tempString);
     }
   }
  log(list.toString()); // [05b37ffe, 4973959c, 4d4f2d5c, a0c14357, 49f8cc66]

CodePudding user response:

String str = '05b37ffe4973959c4d4f2d5ca0c1435749f8cc66';
  int d=1
;  try{
     d = (str.length/5).toInt();
     print(d);
  }catch(e){
  d=1;
  }
  List datas=[];
  for(int i=0;i<d;i  ){
    var c=i 1;
    try {
      datas.add(str.substring(i * d, d*c));
    } catch (e) {
      print(e);
    }
  }
  print(datas);

}

enter image description here

OR

  String str = '05b37ffe4973959c4d4f2d5ca0c1435749f8cc66';
  int d = (str.length / 5).toInt();
  var data = List.generate(d - 3, (i) => (d * (i   1)) <= str.length ? str.substring(i * d, d * (i   1)) : "");
  print(data);//[05b37ffe, 4973959c, 4d4f2d5c, a0c14357, 49f8cc66]

CodePudding user response:

If you're into one liners, with dynamic parts. Make sure to import dart:math for min function. This is modular, i.e. you can pass whichever number of parts you want (default 5). If you string is 3 char long, and you want 5 parts, then it'll return 3 parts with 1 char in each.

List<String> splitIntoEqualParts(String str, [int parts = 5]) {
  int _parts = min(str.length, parts);
  int _sublength = (str.length / _parts).ceil();
  
  return Iterable<int>
    //Initialize empty list
    .generate(_parts)
    .toList()
    // Apply the access logic
    .map((index) => str.substring(_sublength * index, min(_sublength * index   _sublength, str.length)))
    .toList();
}

You can then use it such as print(splitIntoEqualParts('05b37ffe4973959c4d4f2d5ca0c1435749f8cc66', 5));

  • Related