在JavaScript或TypeScript中,Dart的splitMapJoin是否可以替代?

问题描述

我在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。电势和电容_12.jpeg && ## media / 17。电势和电容_12.txt ##

在这里,需要不同处理的两个部分是-

1。

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

&& media / 17。电势和电容_12.jpeg && ## media / 17。电势和电容_12.txt ##

有没有办法在JavaScript中获得此功能

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

解决方法

通过拆分时使用一个组(括号)来解决-

public static void appendCssClass(HtmlGenericControl htmlGenericControl,string cssClassName)
    {
        htmlGenericControl.Attributes.Add("class",htmlGenericControl.Attributes["class"].ToString() + " " + cssClassName);
    }

    public static void removeCssClass(HtmlGenericControl htmlGenericControl,htmlGenericControl.Attributes["class"].Replace(cssClassName,""));
    }