jQuery的大写单词定位
我需要找到字大写的<p> </p>
之间写了超过4个字符,并将它们添加样式(例如,斜体)。jQuery的大写单词定位
我知道的功能isUpperCase()
,但不知道如何运用它来检查,如果字符串是超过4个字符。
function isUpperCase(string) {
(?)
}
谢谢。
var ps = [].slice.call(document.getElementsByTagName("p"))
ps.forEach(function (p) {
p.textContent.split(" ").forEach(function (word) {
if (word.length > 4 && word.toUpperCase() === word) {
// 4character UPPERCASE word
}
})
})
你可以使用正则表达式替换任何大写文字长度超过四个字符的innerHTML与文字由你想插入标记包围每<p>
元素:
$('p').each(function(){
var pattern = /([-A-Z0-9]{4,})/g;
var before = '<span style="color: red;">';
var after = '</span>';
$(this).html($(this).html().replace(pattern, before+"$1"+after));
});
这个正则表达式还允许数字/字母和带连字符的单词的组合。只有用'[A-Z]'替换'[-A-Z0-9]',才能将其缩减为大写字母字符。 – Aaron 2012-03-14 05:11:27
是啊,像罗布说,我不认为Raynos的答案将工作的跨浏览器,它也不会让你修改段落中的比赛。
这里有一个稍作修改的版本:
var i = 0, ps = document.getElementsByTagName("p");
for(len = ps.length; i<len; i++)
{
var p = ps[i];
p.innerHTML = p.innerHTML.replace(/\b([A-Z]{4,})\b/g, "<span style='font-style:italic'>$1</span>";
}
您可以更改跨度码是要添加任何风格。只要确保保留$ 1,即引用原始的大写单词。
(这与Aaron非常相似,只是它不需要jQuery,并且不会匹配围绕它们的小写字母的大写字母“aCAPSa”) – Ethan 2012-03-14 05:08:41
什么你试过吗?我们能否看到预期的示例输入和输出? – gideon 2012-03-14 04:23:40
会像..输入:“你好世界”,输出:“你好_world_”。找不到关于此主题的任何内容,只能如何将段落的首字母大写。 – 2012-03-14 04:27:56
您是否尝试过使用正则表达式来查找所有匹配项? – PFY 2012-03-14 04:31:16