正如标题所说,我有一个字符串,我想把它分成n个字符的片段。
例如:
var str = 'abcdefghijkl';
当n=3时,它会变成
var arr = ['abc','def','ghi','jkl'];
有办法做到这一点吗?
正如标题所说,我有一个字符串,我想把它分成n个字符的片段。
例如:
var str = 'abcdefghijkl';
当n=3时,它会变成
var arr = ['abc','def','ghi','jkl'];
有办法做到这一点吗?
当前回答
这里我们每隔n个字符就在一个字符串中穿插另一个字符串:
export const intersperseString = (n: number, intersperseWith: string, str: string): string => {
let ret = str.slice(0,n), remaining = str;
while (remaining) {
let v = remaining.slice(0, n);
remaining = remaining.slice(v.length);
ret += intersperseWith + v;
}
return ret;
};
如果我们像这样使用上面的语句:
console.log(splitString(3,'|', 'aagaegeage'));
我们得到:
亚美大陆煤层气有限公司|亚美大陆煤层气有限公司| aeg |坚毅不屈| e
这里我们做同样的事情,但是push到一个数组:
export const sperseString = (n: number, str: string): Array<string> => {
let ret = [], remaining = str;
while (remaining) {
let v = remaining.slice(0, n);
remaining = remaining.slice(v.length);
ret.push(v);
}
return ret;
};
然后运行它:
console.log(sperseString(5, 'foobarbaztruck'));
我们得到:
[“fooba”、“rbazt”、“ruck”]
如果有人知道简化上述代码的方法,请使用lmk,但它应该适用于字符串。
其他回答
试试这个简单的代码,它会像魔法一样工作!
let letters = "abcabcabcabcabc";
// we defined our variable or the name whatever
let a = -3;
let finalArray = [];
for (let i = 0; i <= letters.length; i += 3) {
finalArray.push(letters.slice(a, i));
a += 3;
}
// we did the shift method cause the first element in the array will be just a string "" so we removed it
finalArray.shift();
// here the final result
console.log(finalArray);
如果你不想使用正则表达式…
var chunks = [];
for (var i = 0, charsLength = str.length; i < charsLength; i += 3) {
chunks.push(str.substring(i, i + 3));
}
jsFiddle。
...否则正则表达式的解决方案是相当好的:)
str.match(/.{3}/g); // => ['abc', 'def', 'ghi', 'jkl']
const chunkStr = (str, n, acc) => {
if (str.length === 0) {
return acc
} else {
acc.push(str.substring(0, n));
return chunkStr(str.substring(n), n, acc);
}
}
const str = 'abcdefghijkl';
const splittedString = chunkStr(str, 3, []);
干净的解决方案没有REGEX
这里我们每隔n个字符就在一个字符串中穿插另一个字符串:
export const intersperseString = (n: number, intersperseWith: string, str: string): string => {
let ret = str.slice(0,n), remaining = str;
while (remaining) {
let v = remaining.slice(0, n);
remaining = remaining.slice(v.length);
ret += intersperseWith + v;
}
return ret;
};
如果我们像这样使用上面的语句:
console.log(splitString(3,'|', 'aagaegeage'));
我们得到:
亚美大陆煤层气有限公司|亚美大陆煤层气有限公司| aeg |坚毅不屈| e
这里我们做同样的事情,但是push到一个数组:
export const sperseString = (n: number, str: string): Array<string> => {
let ret = [], remaining = str;
while (remaining) {
let v = remaining.slice(0, n);
remaining = remaining.slice(v.length);
ret.push(v);
}
return ret;
};
然后运行它:
console.log(sperseString(5, 'foobarbaztruck'));
我们得到:
[“fooba”、“rbazt”、“ruck”]
如果有人知道简化上述代码的方法,请使用lmk,但它应该适用于字符串。