Ответ 1
Попробуйте это
function splitValue(value, index) {
return value.substring(0, index) + "," + value.substring(index);
}
console.log(splitValue("3123124", 2));
У меня есть строка, которую мне нужно разделить на данный индекс, а затем вернуть обе части, разделенные запятой. Например:
string: 8211 = 8,211
98700 = 98,700
Поэтому мне нужно иметь возможность разделить строку на любой заданный индекс и затем вернуть обе половины строки. Построенные методы, похоже, выполняют разделение, но возвращают только одну часть раскола.
string.slice возвращает только извлеченную часть строки. string.split позволяет только разделить на символ не индекс string.substring делает то, что мне нужно, но возвращает только подстроку string.substr очень похоже - все равно возвращает подстроку
Попробуйте это
function splitValue(value, index) {
return value.substring(0, index) + "," + value.substring(index);
}
console.log(splitValue("3123124", 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]]
)
Вы также можете использовать номерной формат JS, доступный в
https://code.google.com/p/javascript-number-formatter/
http://jsfiddle.net/chauhangs/hUE3h/
format("##,###.", 98700)
format("#,###.", 8211)
Что-то вроде этого?...
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;
}
Вы также можете сделать это так. 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);
Если уровень элегантности кода выше, чем показатель производительности для регулярных выражений, то
'1234567'.match(/^(.*)(.{3})/).slice(1).join(',')
=> "1234,567"
Есть много места для дальнейшего изменения регулярного выражения, чтобы быть более точным.
Если join()
не работает, то вам может потребоваться использовать map
с закрытием, после чего другие ответы могут быть меньше байтов и шума линии.