【问题标题】:Is there an alternative for Dart's splitMapJoin in JavaScript or TypeScript?Dart 在 JavaScript 或 TypeScript 中的 splitMapJoin 是否有替代方案?
【发布时间】:2020-12-27 03:07:41
【问题描述】:

我在 Dart 中有一个函数,它使用正则表达式以不同方式处理字符串的匹配和不匹配部分。

Future<List<String>> _getQuestionParts(String questionText) async {
List<String> parts = List();

questionText.splitMapJoin(
  RegExp(r'&&[\s\S]*?\S##'),
  onNonMatch: (nonMatch) {
    nonMatch = nonMatch.trim();

    if (nonMatch.isNotEmpty) {
      parts.add(_texToLatex(nonMatch));
    }

    return nonMatch;
  },
  onMatch: (match) {
    String matchString = match.group(0);

    parts.add(matchString);

    return matchString;
  },
);

for (int i = 0; i < parts.length; i++) {
  String part = parts[i];

  if (part.startsWith('&&') && part.endsWith('##')) {
    parts[i] = await _getBase64String(part, 'assets');
  }
}

return parts;

}

示例文本是 -

图中显示的冷凝器系统中存储的总能量将为&&media/17.ELECTROSTATIC POTENTIAL AND CAPACITANCE_12.jpeg&#media/17.ELECTROSTATIC POTENTIAL AND CAPACITANCE_12.txt##

这里要区别处理的两个部分是-

1.

图中所示的冷凝器系统中储存的总能量为

&&media/17.ELECTROSTATIC POTENTIAL AND CAPACITANCE_12.jpeg&#media/17.ELECTROSTATIC POTENTIAL AND CAPACITANCE_12.txt##

有没有办法在 JavaScript 中获得这个功能?

我认为这将是拆分和匹配的组合,但它应该以正确的顺序返回匹配和不匹配的部分。

【问题讨论】:

    标签: javascript dart split string-matching


    【解决方案1】:

    在拆分时使用组(括号)解决了 -

    var matches = text.split(/(&&[\s\S]+?&&##[\s\S]+?##)/gm);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-16
      • 2021-04-16
      • 2020-06-13
      • 1970-01-01
      • 2012-09-02
      • 2017-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多