有一个由随机数字和字母组成的字符串。我需要把这个字符串分成 5 部分。并获取列表。怎么做呢?谢谢。
String str = '05b37ffe4973959c4d4f2d5ca0c1435749f8cc66';
应该有效:
List<String> list = [
'05b37ffe',
'4973959c',
'4d4f2d5c',
'a0c14357',
'49f8cc66',
];
我知道已经有一个有效的答案,但我已经开始了,所以这里有一个不同的解决方案。
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]
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]
如果您喜欢带有动态部件的衬垫。 确保为 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));
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);
}
我尝试了前面的两个代码,但它们不起作用(包括所选的答案)。
遵循实际有效的代码:
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(" ");
}