it-swarm.com.de

zeichenfolge in zwei Indizes auf den angegebenen Index aufteilen und beide Teile zurückgeben

Ich habe eine Zeichenfolge, die ich für einen bestimmten Index aufteilen und dann beide Teile zurückgeben muss, getrennt durch ein Komma. Zum Beispiel:

string: 8211 = 8,211
        98700 = 98,700

Daher muss ich in der Lage sein, die Zeichenfolge in einem bestimmten Index aufzuteilen und dann beide Hälften der Zeichenfolge zurückzugeben. Integrierte Methoden scheinen die Aufteilung durchzuführen, geben jedoch nur einen Teil der Aufteilung zurück.

string.slice gibt nur den extrahierten Teil des Strings zurück. string.split erlaubt nur das Teilen nach Zeichen. index. string.substring macht das, was ich brauche, gibt aber nur den Teilstring. gibt immer nur den Teilstring zurück

39
Mike Rifgin

Versuche dies 

function splitValue(value, index) {
    return value.substring(0, index) + "," + value.substring(index);
}

console.log(splitValue("3123124", 2));

71

ES6 1-Liner

// :: splitAt = number => Array<any>|string => Array<Array<any>|string>
const splitAt = index => x => [x.slice(0, index), x.slice(index)]

console.log(
  splitAt(1)('foo'), // ["f", "oo"]
  splitAt(2)([1, 2, 3, 4]) // [[1, 2], [3, 4]]
)
  

38
Alan R. Soares

Etwas wie das?...

 function stringConverter(varString, varCommaPosition)
 {
   var stringArray = varString.split("");
   var outputString = '';
   for(var i=0;i<stringArray.length;i++)
   {
     if(i == varCommaPosition)
      {
        outputString = outputString + ',';
      }

     outputString = outputString + stringArray[i];
   }  

   return outputString;
 }
1
Nathan

Sie können es auch so machen.
https://jsfiddle.net/Devashish2910/8hbosLj3/1/#&togetherjs=iugeGcColp

var str, result;
str = Prompt("Enter Any Number");

var valueSplit = function (value, length) {
    if (length < 7) {
        var index = length - 3;
        return str.slice(0, index) + ',' + str.slice(index);
    }
    else if (length < 10 && length > 6) {
        var index1, index2;
        index1 = length - 6;
        index2 = length - 3;
        return str.slice(0,index1) + "," + str.slice(index1,index2) + "," + str.slice(index2);
    }
}

result = valueSplit(str, str.length);
alert(result);
1
devashish-patel

Sie können auch den Nummernformatierer JS verwenden, der unter verfügbar ist 

https://code.google.com/p/javascript-number-formatter/

Formatoptionen

http://jsfiddle.net/chauhangs/hUE3h/

  format("##,###.", 98700)
  format("#,###.", 8211)

Wenn Code-Eleganz höher ist als der Leistungstreff von Regex, dann

'1234567'.match(/^(.*)(.{3})/).slice(1).join(',')
=> "1234,567"

Es gibt viel Spielraum, um den Regex weiter zu modifizieren, um genauer zu sein.

Wenn join() nicht funktioniert, müssen Sie möglicherweise map mit einer Schließung verwenden. Dann können die anderen Antworten hier weniger Bytes und Leitungsrauschen sein.

0
i336_