주어진 인덱스에서 분할 한 다음 두 부분을 쉼표로 구분하여 반환해야하는 문자열이 있습니다. 예를 들면 :
string: 8211 = 8,211
98700 = 98,700
따라서 주어진 인덱스에서 문자열을 분할 한 다음 문자열의 절반을 모두 반환 할 수 있어야합니다. 내장 메서드는 분할을 수행하는 것처럼 보이지만 분할의 한 부분 만 반환합니다.
string.slice는 문자열의 추출 된 부분 만 반환합니다. string.split은 인덱스가 아닌 문자로만 분할 할 수 있습니다.
답변
이 시도
function split_at_index(value, index)
{
return value.substring(0, index) + "," + value.substring(index);
}
console.log(split_at_index('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]]
)
답변
쉽게 확장하여 여러 인덱스로 분할하고 배열 또는 문자열을 사용할 수 있습니다.
const splitOn = (slicable, ...indices) =>
[0, ...indices].map((n, i, m) => slicable.slice(n, m[i + 1]));
splitOn('foo', 1);
// ["f", "oo"]
splitOn([1, 2, 3, 4], 2);
// [[1, 2], [3, 4]]
splitOn('fooBAr', 1, 4);
// ["f", "ooB", "Ar"]
lodash 문제 추적기 : https://github.com/lodash/lodash/issues/3014
답변
다음에서 사용할 수있는 숫자 포맷터 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
적은 바이트와 라인 노이즈가 여기 다른 답변을 지적하는 폐쇄와 함께.