简体   繁体   English

多个分隔符拆分后如何获取分隔符?

[英]How to get delimiters after split by multiple delimiters?

I use this phones = value.split(RegExp(r":| |:| |)"));我用这个phones = value.split(RegExp(r":| |:| |)")); to split my phone numbers, so I got内線, 7+90+21931465 and 070-2193-1465 from内線:7+90+21931465:070-2193-1465 , but I want to show them as 内線: 7+90+21931465 : 070-2193-1465 , how can I get array as内線, , 7+90+21931465 , : and 070-2193-1465 ?拆分我的电话号码,所以我得到了内線7+90+21931465070-2193-1465来自内線:7+90+21931465:070-2193-1465 ,但我想将它们显示为内线: 7+90+ 21931465 : 070-2193-1465 , 怎样才能得到数组为内線, , 7+90+21931465 , :070-2193-1465 ?

  var value = '内線:7+90+21931465:070-2193-1465';
  var regExp = RegExp(r'^(.+)(:|:)(.+)(:|:)(.+)$');

  print(value);
  var match = regExp.firstMatch(value);
  var numGroups = match.groupCount;
  var groups = match.groups(List<int>.generate(numGroups, (i) => i + 1));
  print(groups.toString());

Another way:另一种方式:

  var chesu = value.split(RegExp(r':|:'))..insert(1, ':')..insert(3, ':');
  print(chesu);

Does this work for you:这对你有用吗:

void main() {
  final input = "part1:part2;part3%part4";
  
  final result = <String>[];
  
  input.splitMapJoin(
    RegExp(r":|;|%"), 
    onMatch: (match) {
      result.add(match.group(0));
      return "";
    },
    onNonMatch: (value) {
      result.add(value);
      return "";
    },
  );
  
  print(result);
}

Output: Output:

[part1, :, part2, ;, part3, %, part4]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM