javascript - 如何在2个字符串之间获取字符串
问题描述
我有一个字符串,例如这个字符串:
bigString = "<div dir=\"rtl\" style=\"text-align: right\"><ul><li><span>רשאי, רק כאשר הרכב העוקף הוא רכב משא.</span></li><li><span>רשאי, רק בדרך שאינה עירונית.</span></li><li><span id=\"correctAnswer1759\">רשאי.</span></li><li><span>רשאי, אם באוטובוס אין נוסעים.</span></li></ul><div style=\"padding-top: 4px;\"><span><button type=\"button\" onclick=\"var correctAnswer=document.getElementById('correctAnswer1759');correctAnswer.style.background='yellow'\">הצג תשובה נכונה</button></span><br/><span style=\"float: left;\">| «D» | </span></div></div>"
我想得到这些字符串中的每一个。为此,我决定将第一个字符串保存在数组中<li><span>HERE</span></li>
,然后从大字符串中删除覆盖它的标签,并重复执行 3 次,直到每个字符串都在数组中。
我可以用 Java 来做,但 Java 有另一个问题,所以我决定用 JavaScript 来做。
在 Java 中,我可以使用这个函数来获取第一个字符串:
arr[j] = StringUtils.substringBetween(bigString,"<li><span>","</span></li>");
然后用这些函数替换第一个<li><span> </span></li>
标签:
bigString = bigString.replaceFirst("<li><span>","<null>");
bigString = bigString.replaceFirst("</span></li>","<null>");
现在我找不到合适的函数来替换 Java 函数。
var bigString = data.records[0].description4;
var end = "</span></li>";
var start = "<li><span>";
var strings = []; bigString.split(end).forEach(s => {index = s.indexOf(start);
if (index >= 0) {strings.push(s.substring(index + 3)); }});
for(var i = 0; i < 3; i++){
console.log(strings[i]);
}
我需要的结果: רשאי,רק כאשר הרכב העוקף הוא רכב משא。רשאי, רק בדרך שאינה עירונית。רשאי, אם באוטובוס אין נוסעים。
解决方案
它绝对不是最干净的,但我会提出一个这样的解决方案来将所有字符串提取到一个数组中:
function getMiddleStrings(bigString, begin, end) {
strings = [];
bigString.split(end).forEach(s => {
index = s.indexOf(begin);
if (index >= 0) {
strings.push(s.substring(index + begin.length));
}
});
return strings;
}
然后该数组strings
包含所有子字符串。
通过调用getMiddleStrings(bigString, "<li><span>", "</span></li>")
,您基本上是在每个</span></li>
标签处拆分字符串,然后删除之前的所有内容并包括所有<li><span>
标签。
推荐阅读
- python - 在 Python 中使用 Schedule 进行多处理
- javascript - 在使用可观察的和使用异步的声明性方法测试角度组件时,获取 TypeError 管道不是一个函数
- postgresql - 使用带有 UUID 的 SQL“seek”在 PL/pgSQL 查询中进行排序
- django - 如何在 Django Rest Framework 中将图像 URL 作为前缀 https:// 返回?
- assembly - 如何在长模式下禁用 vga 光标
- excel - 如何将固定单元格复制到最外面的空单元格中
- ruby-on-rails - 在 Heroku 中安装特定版本的 Bonsai Elasticsearch
- angular - 拖放动态添加“drop”位置 - cdkDropListGroup
- embedded-linux - 无法从 PC 通过主机名(和安装的 avahi)ping 设备
- c# - 反序列化依赖于字段值