API Postman Response-提取两个标签之间的内容

x8diyxa7  于 2022-11-07  发布在  Postman
关注(0)|答案(1)|浏览(142)

以下是从原始数据解码的 Postman 响应。对于所有行,将提取位于两个事实标记之间的内容。

<div class="stl_01" style="left:7.6167em;top:6.1257em;"><span class="stl_05 stl_06 stl_07"><fact value="1%" class="accepted">百分之一</fact> </span></div>
<div class="stl_01" style="left:7.6167em;top:7.6257em;"><span class="stl_05 stl_06 stl_07"><fact value="2%" class="accepted">百分之二</fact> </span></div>
<div class="stl_01" style="left:7.6167em;top:9.1257em;"><span class="stl_05 stl_06 stl_07"><fact value="3%" class="accepted">百分之三</fact> </span></div>
<div class="stl_01" style="left:7.6167em;top:10.6257em;"><span class="stl_05 stl_06 stl_07"><fact value="4%" class="accepted">百分之四</fact> </span></div>

以下剪切用于解码原始数据。

var parsedBase64=CryptoJS.enc.Base64.parse(ContentText);
console.log(parsedBase64);

var parsedStr = parsedBase64.toString(CryptoJS.enc.Utf8);
console.log("Testing for content:" + parsedStr + "End content");
v440hwme

v440hwme1#

我的字符串处理方法。
如果您有一个html字符串,例如

htmlStr = `<div class="stl_01" style="left:7.6167em;top:6.1257em;"><span class="stl_05 stl_06 stl_07"><fact value="1%" class="accepted">百分之一</fact> </span></div>
                <div class="stl_01" style="left:7.6167em;top:7.6257em;"><span class="stl_05 stl_06 stl_07"><fact value="2%" class="accepted">百分之二</fact> </span></div>
                <div class="stl_01" style="left:7.6167em;top:9.1257em;"><span class="stl_05 stl_06 stl_07"><fact value="3%" class="accepted">百分之三</fact> </span></div>
                <div class="stl_01" style="left:7.6167em;top:10.6257em;"><span class="stl_05 stl_06 stl_07"><fact value="4%" class="accepted">百分之四</fact> </span></div>`

首先定义一个函数,该函数返回字符串中出现的子字符串的索引数组,例如

function indexes(source, find) {
 if (!source) {
  return [];
 }
 // if find is empty string return all indexes.
 if (!find) {
// or shorter arrow function:
// return source.split('').map((_,i) => i);
  return source.split('').map(function(_, i) { return i; });
 }
 var result = [];
 for (i = 0; i < source.length; ++i) {
// If you want to search case insensitive use 
// if (source.substring(i, i + find.length).toLowerCase() == find) {
  if (source.substring(i, i + find.length) == find) {
   result.push(i);
  }
 }
 return result;
}

然后找到子字符串class="accepted"></fact>的位置

start = indexes(htmlStr,'class="accepted">')
end = indexes(htmlStr,'</fact>')

最后找到事实标记内的子字符串。

for(let i=0;i<start.length;i++){
    console.log(htmlStr.substring(start[i]+16,end[i]))
}

相关问题