Подтвердить что ты не робот

Разделите строку по два на заданный индекс и верните обе части

У меня есть строка, которую мне нужно разделить на данный индекс, а затем вернуть обе части, разделенные запятой. Например:

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

Поэтому мне нужно иметь возможность разделить строку на любой заданный индекс и затем вернуть обе половины строки. Построенные методы, похоже, выполняют разделение, но возвращают только одну часть раскола.

string.slice возвращает только извлеченную часть строки. string.split позволяет только разделить на символ не индекс string.substring делает то, что мне нужно, но возвращает только подстроку string.substr очень похоже - все равно возвращает подстроку

4b9b3361

Ответ 1

Попробуйте это

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

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

Ответ 2

ES6 1-лайнер

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

Ответ 4

Что-то вроде этого?...

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

Ответ 5

Вы также можете сделать это так. 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);

Ответ 6

Если уровень элегантности кода выше, чем показатель производительности для регулярных выражений, то

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

Есть много места для дальнейшего изменения регулярного выражения, чтобы быть более точным.

Если join() не работает, то вам может потребоваться использовать map с закрытием, после чего другие ответы могут быть меньше байтов и шума линии.