我有一个提供
值的RSS Feedauthor@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();
答案 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');
它将文本保存在字符串末尾的()
内,并将其替换为整个字符串。