在字符串上使用IndexOf来挑选某些单词

时间:2016-05-14 14:46:57

标签: javascript

我试图找出用户输入的某些单词。 基本上,下面的内容是我网站上的人必须以完全相同的格式填写的表单。 然而,唯一的区别是" ["和"]"是他们唯一可以改变的事情

然而,如果他们在文本开始之前和文本开始之后添加空格并不重要(意思是"贸易伙伴"以及&#34之后;通过发送此消息...&# 34;句子)

Trade Partner: [OMeGaXX] 
My Items: ["https://www.roblox.com/The-Classic-ROBLOX-Fedora-item?id=1029025"] 
Their Items: ["https://www.roblox.com/The-Classic-ROBLOX-Fedora-item?id=1029025"]

By sending this message I agree that I have not been bribed or blackmailed to send this and I am completely willing to take part in this trade.

我需要帮助尝试在块引号中挑选出所有内容。例如,名称" OMeGaXX"在贸易伙伴的括号中。 在"我的项目"中可以有多个项目,用逗号分隔:它与"他们的项目"完全相同。我想知道如何将所有网址添加到"我的项目"和"他们的项目"到URL。

此外,最后一句必须始终在 谢谢!

3 个答案:

答案 0 :(得分:1)

可能不想使用indexOf;改为使用正则表达式:

var str = `
 Trade Partner: [OMeGaXX] My Items: ["https://www.roblox.com/The-Classic-ROBLOX-Fedora-item?id=1029025"] Their Items: ["https://www.roblox.com/The-Classic-ROBLOX-Fedora-item?id=1029025"]
    `,
    regex = /\[([^\]]*)\]/g,
    tradePartner = str.match(regex)[1],
    myItems = str.match(regex)[1].split(","),
    theirItems = str.match(regex)[1].split(",");

索引1处的匹配中的所有内容都将是正则表达式中的组(括号之间的所有内容)。

在您的代码中,您应该检查事物是否为空: (match = str.match(regex)) ? match[1] : null;

答案 1 :(得分:1)

要找到括号之间的内容,您可以使用正则表达式。假设消息保存在变量msg中,那么我们可以使用

创建匹配数组
var data = msg.match(/\[.+?\]/gi);

这基本上会在字符串中搜索与[anytexthere]匹配的任何模式,并将它们全部放入数组中。

但是,元素仍在括号内,因此请使用以下代码删除字符串的第一个和最后一个字符:

data[1].substring(1,data[1].length-1);

要检查最后一个句子是否在,您可以检查字符串的最后143个字符(在本例中)是否等于该句子。为此,请使用

var lastSentence = msg.substring(-143,0);
if(lastSentence === "By sending this message I agree that I have not been bribed or blackmailed to send this and I am completely willing to take part in this trade.") {
    //Yay, the last sentence is there!
}

答案 2 :(得分:0)

您可能需要查看正则表达式。

var msg = 'Trade Partner: [OMeGaXX] \nMy Items: ["https://www.roblox.com/The-Classic-ROBLOX-Fedora-item?id=1029025"] \nTheir Items: ["https://www.roblox.com/The-Classic-ROBLOX-Fedora-item?id=1029025"]\n\nBy sending this message I agree that I have not been bribed or blackmailed to send this and I am completely willing to take part in this trade."';

var matched = msg.match(/\[.*\]/g);
$(function(){
  $("span").html(matched.join("<br>"));
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
Matched: <span></span>

正则表达式解释:

/
    \[        match the exact character [
        .*    match everything
    \]        match the exact character ]
/g            match multiple occurrences in the string