Javascript 检查字母是否为大写

Javascript checking if a letter is an uppercase

我正在将 python 代码转换为 javascript,此代码的要点是检查是否为大写字母并将其替换为连字符 + 同一字母的小写字母。

var string = "zIndex:5,background:transparent,borderRadius:0px,fontSize:8px";

String.prototype.isUpperCase = function() {
    return this.valueOf().toUpperCase() === this.valueOf();
};

function getIndices(string) {
    for (var s in string) {
        if (string[s].isUpperCase()) {
            string = string.replace(string[s], '-' + string[s].toLowerCase())
        }
    }
    return string
}

document.getElementById('default').innerHTML = string;
document.getElementById('tocss').innerHTML = getIndices(string);
<div id="default"></div>
<br><hr><br>
<div id="tocss"></div>

问题是在检查字母时它会阻止标点符号和特殊字符无法理解如何处理它,我想知道是否有办法忽略 CSS 标点符号?

expeted result, eg.. : borderRadius:0px,fontSize:8px -> border-radius:0px,font-size:8px

您可以使用正则表达式并仅查找大写字母。然后用破折号和小写字母替换。

var string = 'borderRadius:0px,fontSize:8px';

console.log(string.replace(/[A-Z]/g, s => '-' + s.toLowerCase()));

根据@MihaiAlexandru-lonut 的推荐,我放弃了扩展原型,使用这个功能。

function isUpperCase(str) {
    return str == str.toUpperCase() && str != str.toLowerCase();
}

您可以使用 RegExp 将所有大写字母替换为您想要的任何字母

var str = "zIndex:5,background:transparent,borderRadius:0px,fontSize:8px";

const regex = /[A-Z]+/g;


const newStr = str.replace(regex, (match) => `-${match}`.toLowerCase());

console.log('oldStr => ', str)
console.log('newStr => ', newStr)