所以我有一個很好的長字符串,我需要在Javascript中分割一定數量的字符。例如,如果我有如何在javascript中的特定數量的字符之後在空格處分割字符串?
「你是一隻狗,我是一隻貓。」
我希望它在10個字符後分裂,但在下一個空間...所以,而不是分裂狗,我希望下一個空間是分裂點。
我希望我寫得很清楚,有點尷尬的解釋。
編輯:我需要將所有這些存儲到數組中。所以按照我所描述的將字符串分開,但將其存儲到可以迭代的數組中。對不起,我說了一些混亂,有點奇怪。
所以我有一個很好的長字符串,我需要在Javascript中分割一定數量的字符。例如,如果我有如何在javascript中的特定數量的字符之後在空格處分割字符串?
「你是一隻狗,我是一隻貓。」
我希望它在10個字符後分裂,但在下一個空間...所以,而不是分裂狗,我希望下一個空間是分裂點。
我希望我寫得很清楚,有點尷尬的解釋。
編輯:我需要將所有這些存儲到數組中。所以按照我所描述的將字符串分開,但將其存儲到可以迭代的數組中。對不起,我說了一些混亂,有點奇怪。
考慮:
str = "How razorback-jumping frogs can level six piqued gymnasts!"
result = str.replace(/.{10}\S*\s+/g, "$&@").split(/\[email protected]/)
結果:
[
"How razorback-jumping",
"frogs can level",
"six piqued",
"gymnasts!"
]
現在知道了更好的要求,這就是我會做的或類似的事情,但我通常更喜歡'〜'而不是'@'作爲標記。好東西! – elclanrs 2013-04-26 22:59:10
最佳答案 - 謝謝。並向所有人回覆 – muzzledBYbrass 2013-04-26 22:59:22
但空間發生了什麼?它們不是文本的一部分嗎?在修剪空間的問題中我沒有看到任何問題? – Xotic750 2013-04-26 23:14:00
這是你在追求什麼? http://jsfiddle.net/alexflav23/j4kwL/
var s = "You is a dog and I am a cat.";
s = s.substring(10, s.length); // Cut out the first 10 characters.
s = s.substring(s.indexOf(" ") + 1, s.length); // look for the first space and return the
// remaining string starting with the index of the space.
alert(s);
把它包起來,String.prototype.indexOf
將返回-1
如果你正在尋找的字符串沒有找到。爲了確保你不會得到錯誤的結果,請在最後一部分之前檢查。此外,該空間的索引可能是string.length - 1
(該字符串中的最後一個字符是空格),在這種情況下,s.index(" ") + 1
不會給你想要的。
感謝您的回覆,但我需要將所有內容存儲到數組中,所以我無法刪除任何內容。它最有可能成爲正則表達式。 – muzzledBYbrass 2013-04-26 22:34:35
.indexOf
有一個from
參數。
str.indexOf(" ", 10);
您可以拆分之前和之後得到的字符串,分別用:
str.substring(0, str.indexOf(" ", 10));
str.substring(str.indexOf(" ", 10));
下面是一些品種的正則表達式的解決方案:
var result = [];
str.replace(/(.{10}\w+)\s(.+)/, function(_,a,b) { result.push(a,b); });
console.log(result); //=> ["You is a dog", "and I am a cat."]
不錯,謝謝先生。這是我要去的,但我需要有一個更大的字符串數組。所以,如果我有一個500個字符的字符串,我希望有一個像這樣分析的整個事件的數組,但只是應用於整個字符串。 – muzzledBYbrass 2013-04-26 22:32:27
@elclanrs你是一個聰明的傢伙,但你應該記錄你的代碼。 :-) – Tim 2013-04-26 22:32:50
function breakAroundSpace(str) {
var parts = [];
for (var match; match = str.match(/^[\s\S]{1,10}\S*/);) {
var prefix = match[0];
parts.push(prefix);
// Strip leading space.
str = str.substring(prefix.length).replace(/^\s+/, '');
}
if (str) { parts.push(str); }
return parts;
}
var str = "You is a dog and I am a cat and she is a giraffe in disguise.";
alert(JSON.stringify(breakAroundSpace(str)));
產生
["You is a dog",
"and I am a",
"cat and she",
"is a giraffe",
"in disguise."]
這就是東西。萬分感謝。 – muzzledBYbrass 2013-04-26 22:43:16
這應該做你想要什麼,並沒有regexs
var string = "You is a dog and I am a cat.",
length = string.length,
step = 10,
array = [],
i = 0,
j;
while (i < length) {
j = string.indexOf(" ", i + step);
if (j === -1) {
j = length;
}
array.push(string.slice(i, j));
i = j;
}
console.log(array);
這裏是一個jsperf比較這個答案以及您選擇的正則表達式答案。
另:如果你想從每個文本塊修整的空間然後改變像這樣
array.push(string.slice(i, j).trim());
看這幾個小時。優秀 ! – Zl3n 2016-03-20 20:46:33
您選擇在分割點微調的空間答案的代碼,但是,這並不似乎是部分你的要求。 – Xotic750 2013-04-26 23:17:41