Есть ли альтернатива разделенному соединению Dart в JavaScript или TypeScript?

#javascript #dart #split #string-matching

#javascript #dart #разделение #сопоставление строк

Вопрос:

У меня есть функция в Dart, которая использует регулярное выражение для обработки совпадающих и несовпадающих частей строки по-разному.

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

questionText.splitMapJoin(
  RegExp(r'amp;amp;[sS]*?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('amp;amp;') amp;amp; part.endsWith('##')) {
    parts[i] = await _getBase64String(part, 'assets');
  }
}

return parts;
  

}

Пример текста —

Общая энергия, запасенная в конденсаторной системе, показанной на рисунке, будет равна amp;amp;media/17.ЭЛЕКТРОСТАТИЧЕСКИЙ ПОТЕНЦИАЛ И ЕМКОСТЬ_12.jpegamp;amp;##media/17.ЭЛЕКТРОСТАТИЧЕСКИЙ ПОТЕНЦИАЛ И CAPACITANCE_12.txt##

Здесь две части, которые должны обрабатываться по-разному, являются —

1.

Общая энергия, запасенная в конденсаторной системе, показанной на рисунке, будет равна

amp;amp;media/17.ЭЛЕКТРОСТАТИЧЕСКИЙ ПОТЕНЦИАЛ И ЕМКОСТЬ_12.jpegamp;amp;##media/17.ЭЛЕКТРОСТАТИЧЕСКИЙ ПОТЕНЦИАЛ И CAPACITANCE_12.txt##

Есть ли способ получить эту функциональность в JavaScript?

Я думаю, что это будет комбинация разделения и сопоставления, но она должна возвращать совпадающие и несовпадающие части в их правильной последовательности.

Ответ №1:

Это было решено с помощью группы (скобки) при разделении —

 var matches = text.split(/(amp;amp;[sS] ?amp;amp;##[sS] ?##)/gm);