gpt4 book ai didi

string - Dart 高效的字符串处理技术?

转载 作者:行者123 更新时间:2023-12-03 03:28:22 24 4
gpt4 key购买 nike

我以name:key:dataLength:data的格式字符串,这些字符串通常可以链接在一起。例如"aNum:n:4:9879aBool:b:1:taString:s:2:Hi",它将映射到类似以下内容的对象:

{
aNum: 9879,
aBool: true,
aString: "Hi"
}

我有一种解析这种格式的字符串的方法,但是我不确定是否使用 substring是处理字符串的最有效方法,是否有一种更有效的方式以这种方式处理字符串(反复斩首部分):

Map<string, dynamic> fromString(String s){
Map<String, dynamic> _internal = new Map();
int start = 0;
while(start < s.length){
int end;
List<String> parts = new List<String>(); //0 is name, 1 is key, 2 is data length, 3 is data
for(var i = 0; i < 4; i++){
end = i < 3 ? s.indexOf(':') : num.parse(parts[2]);
parts[i] = s.substring(start, end);
start = i < 3 ? end + 1 : end;
}
var tranType = _tranTypesByKey[parts[1]]; //this is just a map to an object which has a function that can convert the data section of the string into an object
_internal[parts[0]] = tranType._fromStr(parts[3]);
}
return _internal;
}

最佳答案

我会尝试s.split(':')并处理结果列表。
如果您进行了大量此类操作,则应考虑创建基准测试,尝试不同的技术并进行比较。

如果您仍然需要此行

 s = i < 3 ? s.substring(idx + 1) : s.substring(idx);

我会避免在每次迭代中创建一个新的子字符串,而只是跟踪 next的位置。

关于string - Dart 高效的字符串处理技术?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22068373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com