2016-12-07 3 views

Antwort

6

Verwenden String#split, Array#map und Array#join Methoden.

var str = "c:0.1|d:0.2"; 
 

 
console.log(
 
    str 
 
    // split string by delimitter `|` 
 
    .split('|') 
 
    // iterate and generate result string 
 
    .map(function(v) { 
 
    // split string based on `:` 
 
    var s = v.split(':') 
 
     // generate the string 
 
    return s[0] + ':' + (Number(s[1]) * 100) + "%" 
 
    }) 
 
    // join them back to the format 
 
    .join() 
 
)


Sie können auch String#replace Methode mit capturing group regex und eine Callback-Funktion verwenden.

var str = "c:0.1|d:0.2"; 
 

 
console.log(
 
    str.replace(/\b([a-z]:)(0\.\d{1,2})(\|?)/gi, function(m, m1, m2, m3) { 
 
    return m1 + 
 
     (Number(m2) * 100) + // calculate the percentage value 
 
     (m3 ? "%," : "%") // based on the captured value put `,` 
 
    }) 
 
)

Regex explanation here.

+1

Vielen Dank O (∩_∩) O –

1

Es ist nicht eckig Problem, Sie einfache Logik verwenden können, verwenden String nehmen Wert nach dem: und mit 100 multipliziert den Wert als 10 oder jeweils zu bekommen.

Verwandte Themen