将绳子分成相等的部分 flutter

问题描述 投票:0回答:5

有一个由随机数字和字母组成的字符串。我需要把这个字符串分成 5 部分。并获取列表。怎么做呢?谢谢。

String str = '05b37ffe4973959c4d4f2d5ca0c1435749f8cc66';

应该有效:

List<String> list = [
  '05b37ffe',
  '4973959c',
  '4d4f2d5c',
  'a0c14357',
  '49f8cc66',
];
flutter dart
5个回答
0
投票

我知道已经有一个有效的答案,但我已经开始了,所以这里有一个不同的解决方案。

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]


0
投票
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

  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]

0
投票

如果您喜欢带有动态部件的衬垫。 确保为 min 函数导入 dart:math。 这是模块化的,即您可以传递所需数量的部件(默认 5)。如果您的字符串长度为 3 个字符,并且需要 5 个部分,那么它将返回 3 个部分,每个部分 1 个字符。

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();
}

然后您就可以使用它,例如

print(splitIntoEqualParts('05b37ffe4973959c4d4f2d5ca0c1435749f8cc66', 5));


0
投票
splitWithCount(String string,int splitCount)
  {
    var array = [];
    for(var i =0 ;i<=(string.length-splitCount);i+=splitCount)
    {
      var start = i;
      var temp = string.substring(start,start+splitCount);
      array.add(temp);
    }
    print(array);
  }

0
投票

我尝试了前面的两个代码,但它们不起作用(包括所选的答案)。

遵循实际有效的代码:

static String split(String value, {int chunk=30}){

List<String> list = [];

if(value.length == 0)
  return "";

if(value.length <= chunk)
  return value;

int i;
for(i =0 ;i<(value.length~/chunk);i++)
{
  var temp = value.substring(i*chunk,i*chunk+chunk);
  list.add(temp + " \n ");
}

if(value.length % chunk != 0){
  list.add( value.substring(i*chunk, value.length) );
}

return list.join(" ");

}

© www.soinside.com 2019 - 2024. All rights reserved.