如何通过javascript或jquery从句子中提取括号内外的文本

时间:2018-11-20 16:18:12

标签: javascript jquery html

我有一个句子存储在变量中。我需要将该句子提取为我代码中其他3个变量中提到的3个部分,现在我已经对该变量进行了硬编码。然后,我需要分别控制台这些变量。我已经尝试过使用slice作为第一个变量,有没有更好的方法。这是下面的代码。任何人都可以帮助我。

HTML

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

脚本

$(document).ready(function(){
 var maintext = "Welcome to project,are you (1. Existing user or 2. new user)"  ;
 var text_split1 = maintext.split(' ').slice(0,4).join(' ');
//var text_split1 =  "Welcome to project,are you" ; /*this text should come from maintext after extraction*/
var text_split2 = "1. Existing user" ; /*this text should come from maintext after extraction*/
var text_split3 = "2. new user" ; /*this text should come from maintext after extraction*/
console.log(text_split1);
console.log(text_split2);
console.log(text_split3);
});

2 个答案:

答案 0 :(得分:1)

在这种情况下,最好的选择是创建一个正则表达式。

在您的情况下(如果我理解正确的话),您的句子包含:

  1. 一些文字
  2. 左括号'('
  3. 更多文字
  4. “或”一词
  5. 更多文字
  6. 右括号')'

因此,您希望正则表达式与上面的格式匹配,并希望捕获项1、3和5。

在这里,我为您制作了正则表达式:/^(.*) ?\((.*) or (.*)\)$/

现在,使用功能exec(string),您可以匹配所需的字符串并从中捕获所需的部分。

regex = /^(.*) ?\((.*) or (.*)\)$/;
maintext = "Welcome to project,are you (1. Existing user or 2. new user)";
matches = regex.exec(maintext);
text_split1 = matches[1];
text_split2 = matches[2];
text_split3 = matches[3];

请注意,我没有使用matches[0]。这是因为这是正则表达式的完整匹配,在这种情况下,它将是您最初使用的完整字符串。

此外,请注意,正则表达式可能会因括号内的任何文本包含完整单词“或”而失败,该单词用于分隔字符串的两个部分。您必须确保这种情况不会发生,或者使用一些特殊字符将两个文本而不是单词分开。

答案 1 :(得分:0)

我建议您看看SplitSubstringIndexOf方法。

例如,如果您想获取括号内的内容,则可以

var inside_split = maintext.substring(maintext.indexOf( "(" ) + 1, maintext.indexOf( ")" ) )

然后是什么

var outside_split = maintext.substring(0, maintext.indexOf("(") - 1)

或使用拆分

var split_Text = maintext.split("(") 

请谨慎使用Split,因为它将导致最后一个括号被包含在内。

Array [ "Welcome to project,are you ", "1. Existing user or 2. new user)" ]

然后您可以使用拆分两个选项

split_Text[1].split("or")

这将导致

Array [ "1. Existing user ", " 2. new user)" ]

然后操作其余的右括号