2012-03-14 4 views
0

<p> </p> 사이에 쓰여진 4 자 이상의 단어를 대문자로 찾아서 스타일 (예 : 기울임 꼴)을 추가해야합니다.jQuery 대문자 단어 로케이터

나는 함수 isUpperCase()에 대해 알고 있지만 문자열이 4 자 이상인지 확인하기 위해 어떻게 적용해야할지 모르겠다.

function isUpperCase(string) { 
    (?) 
} 

감사합니다.

$('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)); 
}); 

http://jsfiddle.net/eHPVg/ :

+0

시도한 내용은 무엇입니까? 예제 입력과 출력이 예상되는 것을 볼 수 있습니까? – gideon

+0

같을 것입니다. 입력 : "hello WORLD", 출력 : "hello _world_". 단락의 첫 글자를 대문자로 사용하는 방법에 대해서만이 항목에 관한 내용을 찾을 수 없습니다. –

+0

정규식을 사용하여 모든 일치 항목을 찾으려고 했습니까? – PFY

답변

4
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 
    } 
    }) 
}) 
+0

매력처럼 작동합니다. Raynos에게 감사드립니다. –

+1

Ooops - * split *은 많은 브라우저에서 * Array * 및 * forEach *가 정의되지 않은 * String.prototype *의 메소드입니다. – RobG

+0

@ RobG 어떤 이유로 든 나는 여전히 5 개의 upvotes가 있습니다. \ – Raynos

1

당신은 삽입하려는 태그로 둘러싸인 텍스트와 모든 <p> 요소의 innerHTML에보다 대문자 텍스트 더 이상 네 개의 문자를 대체 할 정규 표현식을 사용할 수 있습니다

+0

이 정규 표현식은 숫자/문자와 하이픈이 결합 된 단어를 허용합니다. '[-A-Z0-9]'를'[A-Z]'로 바꿈으로써 대문자 알파 문자로 줄일 수 있습니다. – Aaron

1

그래, Rob이 말했듯이, 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을 그대로 두십시오.

+0

(이것은 jQuery가 필요없고 "aCAPSa"주변에 소문자가있는 대문자와 일치하지 않는다는 점을 제외하면 Aaron과 매우 비슷합니다) – Ethan