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

标签 string dart

我以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/

相关文章:

java - 如何在java中使用正则表达式分割包含数字和字母的字符串

dart - 是否可以在Dart中为函数的参数设置默认值?

Flutter:禁用带有资源作为图标的 IconButton

python - 反转 Pandas 子集数据框中的字符串列

dart - Flutter - 在应用交互中生成

dart - 在 Flutter iconButton 中点击 appBar 但错误来了

flutter - 当启用空安全时,默认的 'List' 构造函数不可用。 flutter

c++ - 运行 Brute Force 算法时出错?

c - fprintf 和 NULL 终止符

iPhone 解析 GET 参数的 url