如何在javascript

时间:2018-01-11 07:22:34

标签: javascript node.js regex wikipedia-api

我从维基百科中获取一些数据,它在括号内有一些内容,我想删除括号内的所有内容。我可以使用content.replace(/\s*\(.*?\)\s*/g, '')在括号单一时删除数据,但对于某些数据,括号是double和triple。请帮助我获得预期的输出。

输入

  

俄罗斯((听);俄语:Россия,tr.Rossíya,IPA:[rɐsʲijə])   俄罗斯联邦正式

预期输出

  

俄罗斯正式成为俄罗斯联邦

我现在收到的输出

  

俄罗斯;俄语:Россия,tr。 Rossíya,IPA:[rɐsʲijə])正式的   俄罗斯联邦

5 个答案:

答案 0 :(得分:1)

试试这个

var text = "Russia ( ( listen); Russian: Росси́я, tr. Rossíya, IPA: [rɐˈsʲijə]) officially the Russian Federation"

console.log(text.replace(/\s*\(.*\)/,''));

答案 1 :(得分:1)

使用JS regex无法匹配嵌套括号。 Hare是一个基本的解析器代码来完成这项工作:



var str = 'Russia ( ( listen); Russian: Росси́я, tr. Rossíya, IPA: [rɐˈsʲijə]) officially the Russian Federation (Russian: Российская Федерация, tr. Rossiyskaya Federatsiya, IPA: [rɐˈsʲijskəjə fʲɪdʲɪˈratsɨjə]), is a sovereign country in Eurasia. At 17,125,200 square kilometres (6,612,100 sq mi)';

var result = '';
var lvl = 0;
for (var i = 0, len = str.length; i < len; i++) {
  var ch = str.charAt(i);
  if (ch == '(')
    lvl++;

  if (lvl == 0)  
    result += ch;

  if (ch == ')')
    lvl--;
}

console.log(result.replace(/\s{2,}/g, ' '));
&#13;
&#13;
&#13;

答案 2 :(得分:1)

这可能是一个很长的答案。但逻辑适用于任何情况。

var text = "Russia ( ( listen); Russian: Росси́я, tr. Rossíya, IPA: [rɐˈsʲijə]) officially the (soviet) Russian Federation"

function replaceParenthesis(text) {

  var counter = 0,
    startIndex = 0,
    endIndex = 0,
    parts = [],
    output = text;

  for (var i = 0; i < text.length; i++) {
    if (text[i] === "(") {
      if (counter == 0) {
        startIndex = i;
      }
      counter++;
    } else if (text[i] === ")") {
      counter--;
      if (counter == 0) {
        endIndex = i + 1;
        parts.push(text.substring(startIndex, endIndex));
      }
    }
  }

  parts.forEach(function(part) {
    output = output.replace(part, '');
  });

  return output;

}

console.log(replaceParenthesis(text));

答案 3 :(得分:0)

另一种天真的方法(这里我只删除括号,而不删除空格)。

&#13;
&#13;
var str = "Russia ( ( listen); Russian: Росси́я, tr. Rossíya, IPA: [rɐˈsʲijə]) officially the Russian Federation";
    var output = str.substring(0,str.indexOf("(")) + str.substring(str.lastIndexOf(")")+1,str.length);
    console.log(output);
&#13;
&#13;
&#13;

答案 4 :(得分:0)

最简单的解决方案是使用摘要REST端点的extractextract_html字段:https://en.wikipedia.org/api/rest_v1/page/summary/Russia

注意:虽然它旨在删除大多数发音,但这并不是盲目地删除所有括号。例如。你不想删除所有的括号,尤其是当谈到复杂的化学配方。此外,保留括号内的单个单词。