2016-11-04 4 views
0

Ich möchte alle Zahlen in den Zeilen multiplizieren, die "BuyPrice:" mit einem bestimmten Wert enthalten. Multiplizieren Sie Zahlen in Regex übereinstimmenden Zeilen

shops: 
blocks: 
    name: "&9&lBlocks (page %page%)" 
    items: 
    1: 
     type: item 
     item: 
     material: GRASS 
     quantity: 64 
     buyPrice: 500 
     sellPrice: 50 
     slot: 0 
    2: 
     type: item 
     item: 
     material: DIRT 
     quantity: 64 
     buyPrice: 500 
     sellPrice: 30 
     slot: 1 
    3: 
     type: item 
     item: 
     material: GRAVEL 
     quantity: 64 
     buyPrice: 500 
     sellPrice: 50 
     slot: 2 

entdecken ich ein Stück Code (siehe unten), die „buyPrice: NaN“ zurück statt „buyPrice: 1000“ etc, wenn ich zum Beispiel einen Multiplikator von 2. verwenden würde ich die Hilfe zu schätzen wissen!

addEventListener('load', function() { 
 
document.getElementById('replace').addEventListener('click', function() { 
 
    window.factor = parseInt(prompt('Which factor should the values be multiplied with?', 1)); 
 
    if (factor) { 
 
     var input = document.getElementById('textinput'); 
 
     input.value = input.value.replace(/sellPrice: [0-9]+/g, function(match) { return 'sellPrice: ' + (parseInt(match, 10) * window.factor); }); 
 
    } 
 
}); 
 
});
<button id="replace">Multiply px values</button> 
 
<textarea style="width:100%;height:2000px;" id="textinput"></textarea>

+0

Verwenden Sie 'input.value = input.value.replace (/ buyPrice: (\ d +)/g, Funktion (match, group1) { Rückgabe 'buyPrice:' + (parseInt (group1, 10) * window.factor); }) ' –

+0

Es hat funktioniert! Ich danke dir sehr! Ich schätze die Hilfe sehr. – AvidLearner

+0

Froh, dass es für Sie funktioniert hat. Bitte überlegen Sie, die Antwort zu akzeptieren (siehe [So akzeptieren Sie SO-Antworten] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)). –

Antwort

0

Im Code, den Sie zur Verfügung gestellt, der ganze gefundenen Text als Zahl analysiert wird, während Sie nur die Ziffernfolge in eine Zahl umgewandelt werden müssen. So schließen Sie den Teil Ziffernanpassung mit Klammern und das zweite Argument für die anonyme Methode übergeben:

input.value = input.value.replace(/buyPrice: (\d+)/g, function(match, group1) { 
    return 'buyPrice: ' + (parseInt(group1, 10) * window.factor); 
}); 

Hier (\d+) 1+ Ziffern in Gruppen erfassen wird 1, und dieser Wert wird durch das group1 Argument zur Verfügung.

Verwandte Themen