2011-05-23 56 views
1

即时寻找一个循环,将检查大写字母字符的字符串中使用功能检查字符的字符串,并改变它们

function isUpperCase(aCharacter) 
{ 
    return (aCharacter >= 'A') && (aCharacter <= 'Z'); 
} 

当遇到大写字母,将开展anoter功能,让我们叫它'dummyFunction',它会将所有字母改为与大写字母相同的字母,但是只会遇到下一个大写字母,等等。(我希望你明白我的意思)例如,如果我有一个字符串'AbcdeFghijKlmno',结果的程序将是:'AAAAAFFFFFKKKKK'。有任何想法吗?

+0

你的榜样违背你的描述。那你想要什么?大写整个字符串或大写字母只在第一个大写字母到给定字符串中的下一个字符之间,或者您需要两个示例? – 2011-05-23 22:31:23

+0

对不起,我只想在最后一个大写字母和下一个字母之间改变字母。所以A后的所有字母都变为A,F后的所有字母都变为F等等。 – Mark 2011-05-23 22:45:51

回答

0

这我觉得做你想做的。

var arrFromString = 'AbcdeFghijKlmno'.replace(/(.(?=[A-Z]))/g,'$1,').split(','), 
    result = []; 
for (var i=0;i<arrFromString .length;i++){ 
    result.push(/[A-Z]/.test(arrFromString [i].substr(0,1)) ? 
        ? new Array(arrFromString [i].length) 
         .join(arrFromString [i].substr(0,1)) 
        : arrFromString[i] 
    ); 
} 
alert(result.join('')); //=> AAAAFFFFKKKK 
0

推测的结果应该复制的字符,直到达到第一个首都,所以:

var wierdStringThing = (function() { 
    var re = /[A-Z]/; 
    return function (s) { 
    s = s.split(''); 
    var result = []; 
    var t = s[0]; 
    var c; 

    for (var i=0, iLen=s.length; i<iLen; i++) { 
     c = s[i]; 
     if (re.test(c)) { 
     t = c; 
     result.push(c); 
     } else { 
     // Copies characters until first capital, 
     // then repeats capital until next 
     result.push(re.test(t)? t : c); 
     } 
    } 
    return result.join(''); 
    } 
}()); 

var x = 'adbCasdfHasdV' 
alert(x + '\n' + wierdStringThing(x)); 
/* 
adbCasdfHasdV 
adbCCCCCHHHHV 
*/