Dart-Flutter中如何拆分字符串为列列表并完整展示所有结果
解决Dart中拆分字符串并按序号展示的问题
你当前的代码只取了拆分后的第一个元素(split('#').first),所以只能拿到单个结果。要实现按1.example 2.example的格式展示所有拆分结果,需要两步:先完整获取拆分后的所有元素,再生成带序号的格式化文本。
核心步骤说明
- 正确拆分字符串:
split('#')返回的是List<String>类型,不能直接赋值给String变量,先把所有拆分结果存到列表里:
List<String> splitParts = data!.list!.split('#');
- 生成带序号的文本:遍历列表,给每个元素加上序号后拼接成目标格式,推荐用更简洁的
map+join写法:
String formattedResult = splitParts.asMap().entries.map((entry) { // entry.key是列表索引(从0开始),加1得到从1开始的序号 return '${entry.key + 1}.${entry.value}'; }).join(' '); // 用空格连接每个带序号的元素
完整示例代码
void main() { String originalString = "example#example"; List<String> splitParts = originalString.split('#'); String formattedResult = splitParts.asMap().entries .map((e) => '${e.key + 1}.${e.value}') .join(' '); print(formattedResult); // 输出:1.example 2.example }
替代写法(循环拼接)
如果习惯用循环,也可以这么写:
String formattedResult = ''; for (int i = 0; i < splitParts.length; i++) { formattedResult += '${i + 1}.${splitParts[i]} '; } // 去掉末尾多余的空格 formattedResult = formattedResult.trim();
内容的提问来源于stack exchange,提问作者cadeting
相关产品推荐
相关产品推荐

