2013-05-08 11 views
27

Mam ciąg znaków, który muszę podzielić na dany indeks, a następnie zwróć obie części oddzielone przecinkiem. Na przykład:Podziel ciąg w dwóch na danym indeksie i zwróć obie części

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

Więc muszę być w stanie podzielić ciąg w danym indeksie, a następnie powrót obie połówki łańcucha. Wbudowane metody wydają się wykonywać podział, ale zwracają tylko jedną część podziału.

Ciąg.slice zwracają tylko wyodrębnioną część ciągu. String.split tylko pozwala podzielić na postać nie indeksem string.substring robi to, co trzeba, ale tylko zwraca podciąg String.substr bardzo podobna - jeszcze tylko zwraca podciąg

+2

można pokazać oczekiwany wynik? –

+2

'split()' zwraca tablicę łańcuchów, jak niewątpliwie wiesz. Proszę podać kod, który wydaje się nie działać dla Ciebie. –

+0

Czy to nie jest tylko separator tysięcy? –

Odpowiedz

52

spróbować tej

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

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

1

coś takiego? ...

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; 
} 
20

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]] 
 
) 
 

1

Możesz również zrobić to w ten sposób.
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);