我有一个句子存储在变量中。我需要将该句子提取为我代码中其他3个变量中提到的3个部分,现在我已经对该变量进行了硬编码。然后,我需要分别控制台这些变量。我已经尝试过使用slice作为第一个变量,有没有更好的方法。这是下面的代码。任何人都可以帮助我。
<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);
});
答案 0 :(得分:1)
在这种情况下,最好的选择是创建一个正则表达式。
在您的情况下(如果我理解正确的话),您的句子包含:
因此,您希望正则表达式与上面的格式匹配,并希望捕获项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)
我建议您看看Split,Substring和IndexOf方法。
例如,如果您想获取括号内的内容,则可以
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)" ]
然后操作其余的右括号