Ich wandle einen Python-Code in Javascript um. In diesem Code wird geprüft, ob Großbuchstaben vorhanden sind, und durch einen Bindestrich + Kleinbuchstaben desselben Buchstabens ersetzt.

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>

Das Problem ist, dass ich mich beim Überprüfen von Buchstaben, die Interpunktionen blockieren, und Sonderzeichen, die nicht verstehen können, was damit zu tun ist, gefragt habe, ob es eine Möglichkeit gibt, CSS-Interpunktionen zu ignorieren.

expeted result, eg.. : borderRadius:0px,fontSize:8px -> border-radius:0px,font-size:8px
2
Hiroyuki Nuri 19 Apr. 2018 im 16:25

3 Antworten

Beste Antwort

Sie können einen regulären Ausdruck verwenden und nur nach Großbuchstaben suchen. Dann durch Bindestrich und Kleinbuchstaben ersetzen.

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

console.log(string.replace(/[A-Z]/g, s => '-' + s.toLowerCase()));
2
Nina Scholz 19 Apr. 2018 im 13:35

Aufgrund der Empfehlung von @ MihaiAlexandru-lonut habe ich die Erweiterung des Prototyps eingestellt und arbeite mit dieser Funktion.

function isUpperCase(str) {
    return str == str.toUpperCase() && str != str.toLowerCase();
}
0
Hiroyuki Nuri 19 Apr. 2018 im 13:32

Sie können RegExp verwenden, um alle Großbuchstaben durch beliebige zu ersetzen

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)
0
Tareq 19 Apr. 2018 im 13:33