2017-12-13 4 views
1

Ich möchte nur den Prozentsatz von MyFruit in einer Zeichenfolge abrufen. Aber vorher mit meiner Variable CleanString, würde ich gerne nur Zahlen aus String mit Ausnahme der Trennzeichen ("." Oder ",") für die Dezimalzahl. Ich weiß nicht, warum es nicht sehr gut funktioniert. Beispiel, wenn es keine "Banane" gibt ... Ich möchte das Ergebnis "1,2" bekommen, wenn es Banane mit Prozent gibt.behalten nur Zahlen aus Zeichenfolge außer Dezimalzahlen

var MyFruitSalad = "orange* 1,5%, bananaX, banana,BaNana_1,2%, apple_5 %, pineapple:3.5%"; 
 
var MyFruit = "banana"; 
 
var PercentMyFruit = MyFruitSalad.slice(MyFruitSalad.indexOf(MyFruit) + MyFruit.length).split('%').shift(); 
 

 
var CleanString = PercentMyFruit.replace(/[^0-9$.,]/g, ''); 
 
console.log(CleanString);

+0

was ist Ihre erwartete Ausgabe? – C2486

+0

Geben Sie ein Beispiel an, was Sie als Ergebnis sehen möchten. – Rodrigo

+1

Wichtig zu klären, ich denke, wo kommst du aus Komma "," wird für dezimal verwendet? –

Antwort

1

Sie in einem String für Kleinbuchstaben in dem der Kleinwort und nehmen den Index bis das Prozentzeichen suchen könnte. Ersetzen Sie dann die unerwünschten Zeichen.

String#indexOf funktioniert Groß-und Kleinschreibung.

function getValue(string, word) { 
 
    var index = string.toLowerCase().indexOf(word.toLowerCase()), 
 
     part = string.slice(index + word.length, string.indexOf('%', index)); 
 

 
    return index === -1 
 
     ? 'no ' + word + ' found!'  // or throw an exception 
 
     : part.replace(/[^0-9$.,]/g, ''); 
 
} 
 

 
console.log(getValue("orange* 1,5%, BaNana_1,2%, apple_5 %, pineapple:3.5%", "banana")); 
 
console.log(getValue("orange* 1,5%, BaNana_1,2%, apple_5 %, pineapple:3.5%", "foo"));

+0

Es funktioniert nicht, wenn nicht "Banane" in var "Salat" ist. Das Ergebnis ist immer "1", 5 – pifou

Verwandte Themen