有没有办法用某个符号分割字符串但只在第一次出现时?
示例:date: '2019:04:01'应该拆分为dateand'2019:04:01'
它也可以看起来像这样date:'2019:04:01'或这样date : '2019:04:01',仍然应该拆分为date和'2019:04:01'
string.split(':');
Run Code Online (Sandbox Code Playgroud)
我尝试使用该split()方法。但它没有限制属性或类似的东西。
Wal*_*vis 20
您永远无法使用 split 命令完成所有这些操作,包括修剪空格。你必须自己做。这是一种方法:
String s = "date : '2019:04:01'";
int idx = s.indexOf(":");
List parts = [s.substring(0,idx).trim(), s.substring(idx+1).trim()];
Run Code Online (Sandbox Code Playgroud)
nvi*_*vi9 14
您可以拆分字符串,跳过创建的列表的第一项并将它们重新连接到字符串。
在你的情况下,它会是这样的:
var str = "date: '2019:04:01'";
var parts = str.split(':');
var prefix = parts[0].trim(); // prefix: "date"
var date = parts.sublist(1).join(':').trim(); // date: "'2019:04:01'"
Run Code Online (Sandbox Code Playgroud)
修剪方法删除第一个冒号周围的任何不必要的空格。
受到 python 的启发,我编写了这个实用函数来支持split具有可选最大分割数的字符串。用法:
split("a=b=c", "="); // ["a", "b", "c"]
split("a=b=c", "=", max: 1); // ["a", "b=c"]
split("",""); // [""] (edge case where separator is empty)
split("a=", "="); // ["a", ""]
split("=", "="); // ["", ""]
split("date: '2019:04:01'", ":", max: 1) // ["date", " '2019:04:01'"] (as asked in question)
Run Code Online (Sandbox Code Playgroud)
在您的代码中定义此函数:
List<String> split(String string, String separator, {int max = 0}) {
var result = List<String>();
if (separator.isEmpty) {
result.add(string);
return result;
}
while (true) {
var index = string.indexOf(separator, 0);
if (index == -1 || (max > 0 && result.length >= max)) {
result.add(string);
break;
}
result.add(string.substring(0, index));
string = string.substring(index + separator.length);
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
在线演示:https://dartpad.dev/e9a5a8a5ff803092c76a26d6721bfaf4
| 归档时间: |
|
| 查看次数: |
21062 次 |
| 最近记录: |