我正在尝试根据字符串上的空格对字符串进行划分,如果我将字符串划分为n个值,则输出应该是具有3个值的数组
我有此字符串,例如“ SIZZLING STEAK TERIYAKI BOY”,我想根据空格将其分为3个,输出应为[“ SIZZLING STEAK”,“ TERIYAKI”,“ BOY”];
另一个例子是我的字符串是“ POWERVILLE FUN RIDES”,如果我将其分为2,则输出应为[“ POWERVILLE FUN”,“ RIDES”],如果我将该字符串分为3,则输出应为是[“ POWERVILLE”,“ FUN”,“ RIDES”];
function getSplitedText(number, word) {
let splitedText = word.split(" ");
let a = "";
let b = [];
let ctr = 1;
for (let i = 0; i < splitedText.length; i++) {
if (ctr === Math.ceil(splitedText.length / number)) {
a += splitedText[i];
b.push(a);
a = "";
ctr = 1;
} else {
a += splitedText[i] += " ";
ctr++;
}
if (i === splitedText.length - 1) {
if (a !== "") b.push(a);
}
}
return b;
}
let ans = getSplitedText(3, "SIZZLING STEAK TERIYAKI BOY");
document.write(ans)
这是我当前的代码:https://jsfiddle.net/nesvcz1w/ 在这个小提琴上,字符串“ SIZZLING STEAK TERIYAKI BOY”变成了[“ SIZZLING STEAK,TERIYAKI BOY”],这是错误的,应该是[“ SIZZLING STEAK”,“ TERIYAKI”,“ BOY”];
答案 0 :(得分:1)
首先,我们可以将字符串分成数组字。我们称之为splitted
。然后,我们可以根据breaker
来决定是将单词串联还是将其推入整个单词:
fooDivider = (str, num) => {
let splitted = str.split(' ');
let breaker = (splitted.length - num) + 1;
const joined = splitted.splice(0, breaker).join(' ');
return [joined, ...splitted];
}
一个例子:
let str = "POWERVILLE FUN RIDES";
fooDivider = (str, num) => {
let splitted = str.split(' ');
let breaker = (splitted.length - num) + 1;
const joined = splitted.splice(0, breaker).join(' ');
return [joined, ...splitted];
}
console.log(fooDivider("SIZZLING STEAK TERIYAKI BOY", 3));
console.log(fooDivider("POWERVILLE FUN RIDES", 2));
答案 1 :(得分:0)
const splitText = (str, n) => {
const strArray = str.split(" ");
if(n === strArray.length) {
return strArray;
} else if(n < strArray.length) {
const combine = strArray.slice(0, (strArray.length-n)+1)
const defaultSet = strArray.slice((strArray.length-n)+1, strArray.length)
return [...[combine.join(" ")], ...defaultSet]
} else {
return []
}
}
const ans1 = splitText("SIZZLING STEAK TERIYAKI BOY", 3);
console.log("ans 1", ans1);
const ans2 = splitText("POWERVILLE FUN RIDES", 2);
console.log("ans 2", ans2);
const ans3 = splitText("POWERVILLE FUN RIDES", 3);
console.log("ans 3", ans3);
希望这可以解决您的问题。
答案 2 :(得分:0)
这将满足您的需求。
function getSplitedText(number, word) {
var indexes = dotIndexes(word);
let splitedText = word.split(" ");
if (number == indexes.length + 1) {
//full parse
return splitedText;
} else {
//just latest ones
let combinedParts = "";
let partsOfResult = [number];
for (let counter = 0; counter < splitedText.length; counter++) {
var element = splitedText[counter];
if (counter > 1) {
partsOfResult[counter-1] = element;
//console.log("seperate :" + splitedText[counter] + counter);
} else {
combinedParts += " ";
combinedParts += element;
//console.log("combine :" + splitedText[counter] + counter);
}
}
combinedParts = combinedParts.trim();
partsOfResult[0] = combinedParts;
return partsOfResult;
}
}
function dotIndexes(word) {
var indices = [];
for (var i = 0; i < word.length; i++) {
if (word[i] === " ") indices.push(i);
}
return indices;
}
var myWord = "SIZZLING STEAK TERIYAKI BOY";
var myWord2 = "POWERVILLE FUN RIDES";
console.log(getSplitedText(3, myWord));
console.log(getSplitedText(4, myWord));
console.log(getSplitedText(2, myWord2));
console.log(getSplitedText(3, myWord2));
答案 3 :(得分:0)
也许您会喜欢;
function fun(t,n){
var ws = t.split(/\s+/);
return [].concat( ws.slice(0,n)
.join(" ")
, ws.slice(n)
);
}
var t1 = "SIZZLING STEAK TERIYAKI BOY",
t2 = "POWERVILLE FUN RIDES";
console.log(fun(t1,2));
console.log(fun(t2,2));