2011-05-30 43 views
8

使用JavaScript的順序,我需要檢查,如果給定的字符串包含重複字母的順序是這樣的:如何確定是否一個字符串包含重複字母

「AAAAA」

我該怎麼做?

+1

你有沒有考慮像雙L或雙C的重複有效的情況下? – Dimitri 2011-05-30 13:09:16

+0

是字母不止一次重複的所有地方 – vetri02 2011-05-30 13:12:13

+2

你想知道所有的地方嗎?或者你想知道他們是什麼? – Eric 2011-05-30 13:19:30

回答

7

您可以使用此功能:

function hasRepeatedLetters(str) { 
    var patt = /^([a-z])\1+$/; 
    var result = patt.test(str); 
    return result; 
} 
+2

因爲[如果我運行它](http://jsfiddle.net/Eric/3M8wx/embedded/result/),它會出錯。 – Eric 2011-05-30 13:23:55

+0

如果它只是在字符串中重複的相同字符只是「aaaaaaaaaaaa」而不是「aadaa」 – vetri02 2011-05-30 13:38:37

+0

@weblearner,我該怎麼辦?兩者都會返回「true」。你想要它有不同的表現嗎? – melhosseiny 2011-05-30 13:42:13

2
function check(str) { 
    var tmp = {}; 
    for(var i = str.length-1; i >= 0; i--) { 
     var c = str.charAt(i); 
     if(c in tmp) { 
      tmp[c] += 1; 
     } 
     else { 
      tmp[c] = 1; 
     } 
    } 
    var result = {}; 
    for(c in tmp) { 
     if(tmp.hasOwnProperty(c)) { 
      if(tmp[c] > 1){ 
       result[c] = tmp[c]; 
      } 
     } 
    } 
    return result; 
} 

然後您可以檢查結果以獲取重複的字符及其頻率。如果結果是空的,則不存在重複。

+1

請注意,某些較舊的瀏覽器不支持在字符串上使用'[]'表示法;在那些上,使用'c = str.charAt(i)'而不是'c = str [i]'。 – 2011-05-30 13:16:17

+0

@ T.J.Crowder:謝謝 – wong2 2011-05-30 13:17:23

11

使用正則表達式:

var hasDuplicates = (/([a-z])\1/i).test(str) 

或者,如果你不想趕aA和喜歡

var hasDuplicates = (/([a-zA-Z])\1/).test(str) 

或者,如果你決定要澄清你的問題:

var hasDuplicates = (/^([a-zA-Z])\1+$/).test(str) 
3

嘗試使用此

checkRepeat = function (str) { 
    var repeats = /(.)\1/; 
    return repeats.test(str) 
} 

使用範例

if(checkRepeat ("aaaaaaaa")) 
alert('Has Repeat!') 
1

這將檢查如果字符串兩次以上重複:

function checkStr(str) { 
    str = str.replace(/\s+/g,"_"); 
    return /(\S)(\1{2,})/g.test(str); 
} 
0
var char = "abcbdf..,,ddd,,,d,,,"; 
var tempArry={}; 

for (var i=0; i < char.length; i++) { 
    if (tempArry[char[i]]) { 
     tempArry[char[i]].push(char[i]); 
    } else { 
     tempArry[char[i]] = []; 
     tempArry[char[i]].push(char[i]); 
    } 
} 

console.log(tempArry); 

這甚至會返回r的數量也是重複的人物。

0

我解決了使用for循環,不與正則表達式

//This check if a string has 3 repeated letters, if yes return true, instead return false 
 
//If you want more than 3 to check just add another validation in the if check 
 

 
function stringCheck (string) { 
 
    for (var i = 0; i < string.length; i++) 
 
     if (string[i]===string[i+1] && string[i+1]===string[i+2]) 
 
      return true 
 
    
 
    return false \t 
 
} 
 
var str1 = "hello word" //expected false 
 
var str2 = "helllo word" //expredted true 
 
var str3 = "123 blAAbA" //exprected false 
 
var str4 = "hahaha haaa" //exprected true 
 

 
console.log(str1, "<==", stringCheck(str1)) 
 
console.log(str2, "<==", stringCheck(str2)) 
 
console.log(str3, "<==", stringCheck(str3)) 
 
console.log(str4, "<==", stringCheck(str4))

相關問題