有一个带有随机数字和字母的字符串。我需要把这条线分成5部分。去拿单子。该怎么做呢?谢谢。
String str = '05b37ffe4973959c4d4f2d5ca0c1435749f8cc66';应起作用:
List<String> list = [
'05b37ffe',
'4973959c',
'4d4f2d5c',
'a0c14357',
'49f8cc66',
];发布于 2022-03-03 18:18:00
我知道已经有了一个可行的答案,但我已经开始这样做了,所以这里有一个不同的解决方案。
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]发布于 2022-03-03 18:08:02
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);
}

或
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]发布于 2022-03-03 18:48:08
如果你是在一个线,有动态的部分。确保导入省道: min函数的数学。这是模块化的,也就是你可以通过你想要的任何数量的零件(默认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));
https://stackoverflow.com/questions/71341474
复制相似问题