我需要找到字大寫的<p> </p>
之間寫了超過4個字符,並將它們添加樣式(例如,斜體)。jQuery的大寫單詞定位
我知道的功能isUpperCase()
,但不知道如何運用它來檢查,如果字符串是超過4個字符。
function isUpperCase(string) {
(?)
}
謝謝。
我需要找到字大寫的<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