javascript根据字符获取子字符串

时间:2016-07-28 14:38:58

标签: javascript jquery

我有一个提供

值的RSS Feed

author@email.com(作者)

我知道我可以使用

author = author.split('(')[1];

但这仍然离开

作者)

我意识到我可以做另一次分裂

author = author.split(')')[0];

但有没有办法在一行中做到这一点?

这是我的代码

            var title = $(this).find('title').text();
            var author = $(this).find('author').text();
            author = author.split('(')[1];
            author = author.split(')')[0];
            var description = $(this).find('description').text();
            var guid = $(this).find('guid').text();

5 个答案:

答案 0 :(得分:0)

你可以用正则表达式做到这一点。

var author = "author@email.com (Author)";
var result = author.replace(/.*\(|\)/g,"")
console.log(result);

这只会替换(和最后)之前的所有内容。

答案 1 :(得分:0)

由于您只想删除字符串中的最后一个字符,因此可以使用slice方法。第一个参数是起始位置(从零开始计数),第二个参数是结束位置。您可以使用负索引从后面计数(例如,-1是最后一个字符,-2是倒数第二个字符)。

使用它,你可以写:

author = author.split('(')[1].slice(0, -1);

答案 2 :(得分:0)

我会使用带有捕获组的正则表达式:

var authorRegex = /^(.*)\s+\((.*)\)$/;
var authorInfo = authorRegex.exec(author);
var email = authorInfo[1];
var name = authorInfo[2];

答案 3 :(得分:0)

您可以将已有的功能链接在一起。

var author = $(this).find('author').text().split('(')[1].split(')')[0]

答案 4 :(得分:0)

而是使用split,在这种情况下,您可以尝试使用replace的正则表达式,例如:

author = author.replace(/^.+\(([^\(\)]+)\)[\s\t]*$/, '$1');

它将文本保存在字符串末尾的()内,并将其替换为整个字符串。