首页 > 解决方案 > 如何在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]);
}

结果:https ://prnt.sc/w1wugv

我需要的结果: רשאי,רק כאשר הרכב העוקף הוא רכב משא。רשאי, רק בדרך שאינה עירונית。רשאי, אם באוטובוס אין נוסעים。

标签: javascript

解决方案


它绝对不是最干净的,但我会提出一个这样的解决方案来将所有字符串提取到一个数组中:

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>标签。


推荐阅读