不能识别父-字符串JQuery中的子字符串
Cannot recognise substring in parent-string JQuery
我有一个父字符串,我想替换某些实体:
这里的例子
var parent_string = "Steven Paul Steve Jobs (February 24, 1955 – October 5, 2011) was an American information technology entrepreneur and inventor who worked with Steve Wozniak.";
var entities = {
PERSON: ['Steven Paul Steve Jobs',
'Steve Wozniak'
],
DATE: ['February 24, 1955',
'October 5, 2011'
]
};
现在循环遍历实体并检查值是否是父字符串的子字符串。如果是,我将它们替换为字符串"REPLACED"
。
var replacement = 'REPLACED';
$.each(entities, function(key, value) {
$.each(this, function(index, val) {
console.log(val);
tester = parent_string.indexOf(val);
console.log(tester);
var re = new RegExp(val);
parent_string = parent_string.replace(re, replacement);
});
console.log(parent_string);
});
现在这是我的问题:这适用于实体除了'Steven Paul Steve Jobs'
。
预期的输出将是这个字符串:
"REPLACED (REPLACED – REPLACED) was an American information technology entrepreneur and inventor who worked with REPLACED."
如果我像这样手动操作:
str = "Steven Paul Steve Jobs (February 24, 1955 – October 5, 2011)";
val = "Steven Paul Steve Jobs";
str.indexOf(val);
…这似乎有效。
为什么这在我的循环中不起作用?
这些名字之间的空白似乎是一些Unicode空白。我建议用正则表达式中的's+
模式替换所有文字空间:
var re = new RegExp(val.replace(/'s+/g, '''s+'));
^^^^^^^^^^^^^^^^^^^^^^^^
然后,正则表达式看起来像/Steven's+Paul's+Steve's+Jobs/
和's
将匹配所有这些空白。
查看更新后的小提琴。
当从问题复制到我的IDE时,您的代码按预期工作。它不能完全工作,因为parent-string
的源代码在随机位置包含转义的HTML实体"Steven Paul Steve Jobs (February...
,因此它不匹配直接字符Steven Paul Steve Jobs
。在外部尝试它,或者调整它以确保字符串的源代码在所有情况下都没有转义。
相关文章:
- 字符串Jquery结构中的变量
- 在字符串 jquery 中添加空格
- 如何在字符串 jQuery 上调用函数
- 将 .val() 转换为字符串 jQuery
- 如何放置 PHP 字符串 jQuery 验证错误消息
- 查找字符串 jQuery/Javascript 的部分
- 从字符串 jQuery 中删除字符串
- 比较明显相等的字符串 JQuery
- 在字符串中使用 PHP 作为字符串.(JQuery)
- 比较两个字符串(jquery .text() 和文字字符串)
- 替换<a>如果它以字符串JQuery结尾
- 字符串jQuery剩余的空白数量
- 重新注册字符串jquery.Ui可拖动
- 字符串替换为另一个字符串jquery/javascript
- 如果子值与某个字符串JQuery匹配,则隐藏父元素
- 单击时从输入中删除字符串?jQuery
- 如何获取特定子字符串jquery之后的字符串
- 不能识别父-字符串JQuery中的子字符串
- 翻译KeyDown键码字符串(jQuery)
- 即使我没有引号来转义,它仍然说我有一个未闭字符串(Jquery)