【发布时间】: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