Baseline Widely available
split()
æ¹æ³æ¥åä¸ä¸ªæ¨¡å¼ï¼éè¿æç´¢æ¨¡å¼å°å符串å岿ä¸ä¸ªæåºçå串å表ï¼å°è¿äºå串æ¾å
¥ä¸ä¸ªæ°ç»ï¼å¹¶è¿å该æ°ç»ã
const str = "The quick brown fox jumps over the lazy dog.";
const words = str.split(" ");
console.log(words[3]);
// Expected output: "fox"
const chars = str.split("");
console.log(chars[8]);
// Expected output: "k"
const strCopy = str.split();
console.log(strCopy);
// Expected output: Array ["The quick brown fox jumps over the lazy dog."]
è¯æ³
split(separator)
split(separator, limit)
åæ°
separator
æè¿°æ¯ä¸ªåå²åºè¯¥åçå¨åªéçæ¨¡å¼ãå¯ä»¥æ¯ undefined
ï¼ä¸ä¸ªåç¬¦ä¸²ï¼æè
ä¸ä¸ªå
·æ Symbol.split
æ¹æ³ç对象ââå
¸åçä¾åæ¯æ£å表达å¼ãçç¥ separator
æä¼ é undefined
ä¼å¯¼è´ split()
è¿åä¸ä¸ªåªå
嫿è°ç¨å符串æ°ç»ãææä¸æ¯ undefined
ç弿ä¸å
·æ [Symbol.split]()
æ¹æ³ç对象é½è¢«å¼ºå¶è½¬æ¢ä¸ºå符串ã
limit
å¯é
ä¸ä¸ªéè´æ´æ°ï¼æå®æ°ç»ä¸å
å«çååç¬¦ä¸²çæ°ééå¶ã彿便¤åæ°æ¶ï¼split æ¹æ³ä¼å¨æå® separator
æ¯æ¬¡åºç°æ¶åå²è¯¥å符串ï¼ä½å¨å·²ç»æ limit
个å
ç´ æ¶åæ¢åå²ãä»»ä½å©ä½çææ¬é½ä¸ä¼å
å«å¨æ°ç»ä¸ã
limit
ãlimit
为 0
ï¼åè¿å []
ãå¨ç»å®å符串ä¸åºç° separator
çæ¯ä¸ä¸ªç¹ä¸è¿è¡åå²èæçå符串æ°ç»ã
妿 separator
æ¯ä¸ä¸ªé空å符串ï¼ç®æ å符串ä¼è¢«ææå¹é
ç separator
åå²ï¼ç»æä¸ä¸å
æ¬ separator
ãä¾å¦ï¼ä¸ä¸ªå
å«å¶è¡¨ç¬¦åéå¼ï¼TSVï¼çå符串å¯ä»¥éè¿ä¼ éä¸ä¸ªå¶è¡¨ç¬¦ä½ä¸ºåé符æ¥è§£æï¼å¦ myString.split("\t")
ã妿 separator
å
å«å¤ä¸ªå符ï¼å¿
é¡»æ¾å°æ´ä¸ªå符åºåæè½åå²ã妿 separator
åºç°å¨å符串çå¼å¤´ï¼æç»å°¾ï¼ï¼å®ä»ç¶å
·æåå²çææï¼ä¼å¯¼è´ä¸ä¸ªç©ºï¼å³é¶é¿åº¦ï¼çå符串åºç°å¨è¿åæ°ç»ç第ä¸ä¸ªï¼ææåä¸ä¸ªï¼ä½ç½®ã妿 separator
没æåºç°å¨ str
ä¸ï¼è¿åçæ°ç»å
å«ä¸ä¸ªå
ç´ ï¼å
¶ä¸æ¯æ´ä¸ªå符串ã
妿 separator
æ¯ä¸ä¸ªç©ºå符串ï¼""
ï¼ï¼str
被转æ¢ä¸ºä¸ä¸ªç±å
¶ UTF-16 åç¬¦ç»æçæ°ç»ï¼å½¢æçå符串ç两端没æç©ºå符ã
夿³¨ï¼ "".split("")
æ¯å¯ä¸ä¸ç§å符串ä½ä¸º separator
åæ°ä¼ å
¥ççæç©ºæ°ç»çæ¹æ³ã
è¦åï¼ å½ç©ºå符串ï¼""
ï¼è¢«ç¨ä½åé符æ¶ï¼åç¬¦ä¸²ä¸æ¯ç±ç¨æ·æç¥çå符ï¼grapheme clusterï¼æ unicode å符ï¼ç ä½ï¼åå²ï¼èæ¯ç± UTF-16 代ç åä½åå²ãè¿ç ´åäºä»£ç对ã请åé
StackOverflow ä¸çâHow do you get a string to a character array in JavaScript?âã
妿 separator
æ¯ä¸ä¸ªå¹é
空åç¬¦ä¸²çæ£å表达å¼ï¼å¹é
æ¯ç± UTF-16 ç å
ï¼code unitï¼è¿æ¯ Unicode ç ä½ï¼code pointï¼åå²ï¼åå³äºæ¯å¦è®¾ç½®äº u
æ å¿ã
"ðð".split(/(?:)/); // [ "\ud83d", "\ude04", "\ud83d", "\ude04" ]
"ðð".split(/(?:)/u); // [ "ð", "ð" ]
妿 separator
æ¯å
å«æè·æ¬å·çæ£å表达å¼ï¼åæ¯æ¬¡ separator
å¹é
æ¶ï¼æè·æ¬å·çç»æï¼å
æ¬ä»»ä½ undefined
çç»æï¼å°è¢«æ¼æ¥å°è¾åºæ°ç»ä¸ãæ¤è¡ä¸ºæ¯ç±æ£å表达å¼å¯¹è±¡ç Symbol.split
æ¹æ³æå®çã
妿 separator
æ¯ä¸ä¸ªå
·æ Symbol.split
æ¹æ³ç对象ï¼è¯¥æ¹æ³è¢«è°ç¨ï¼ç®æ å符串å limit
ä½ä¸ºåæ°ï¼ this
设置为该对象ãå®çè¿åå¼æä¸º split
çè¿åå¼ã
ä»»ä½å ¶ä»å¼å¨ä½ä¸ºåé符ï¼separatorï¼ä½¿ç¨ä¹åé½å°è¢«å¼ºå¶è½¬æ¢ä¸ºå符串ã
ç¤ºä¾ ä½¿ç¨ split()å½åç¬¦ä¸²ä¸ºç©ºå¹¶ä¸æå®äºä¸ä¸ªé空çåé符ï¼split()
è¿å [""]
ã妿å符串ååéç¬¦é½æ¯ç©ºå符串ï¼å°è¿åä¸ä¸ªç©ºæ°ç»ã
const emptyString = "";
// å符串æ¯ç©ºçï¼åé符æ¯é空ç
console.log(emptyString.split("a"));
// [""]
// å符串ååéç¬¦é½æ¯ç©ºç
console.log(emptyString.split(emptyString));
// []
ä¸é¢ç示ä¾å®ä¹äºä¸ä¸ªå½æ°ï¼ä½¿ç¨ separator
å°ä¸ä¸ªå符串å岿ä¸ä¸ªå符串æ°ç»ãå¨åå²å符串åï¼è¯¥å½æ°è®°å½ä¿¡æ¯ï¼æåºåå§å符串ï¼åå²åï¼ã使ç¨çåéç¬¦ãæ°ç»ä¸çå
ç´ æ°ï¼ä»¥åå个æ°ç»å
ç´ ã
function splitString(stringToSplit, separator) {
const arrayOfStrings = stringToSplit.split(separator);
console.log("åå§å符串为ï¼", stringToSplit);
console.log("åé符为ï¼", separator);
console.log(
"åéåçæ°ç»æ",
arrayOfStrings.length,
"个å
ç´ ï¼",
arrayOfStrings.join(" / "),
);
}
const tempestString = "Oh brave new world that has such people in it.";
const monthString = "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec";
const space = " ";
const comma = ",";
splitString(tempestString, space);
splitString(tempestString);
splitString(monthString, comma);
ä¸è¿°ç¤ºä¾ä¼äº§çå¦ä¸è¾åºï¼
åå§å符串为ï¼"Oh brave new world that has such people in it." åé符为ï¼" " åéåçæ°ç»æ 10 个å ç´ ï¼Oh / brave / new / world / that / has / such / people / in / it. / åå§å符串为ï¼"Oh brave new world that has such people in it." åé符为ï¼"undefined" åéåçæ°ç»æ 1 个å ç´ ï¼Oh brave new world that has such people in it. / åå§å符串为ï¼"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec" åé符为ï¼"," åéåçæ°ç»æ 12 个å ç´ ï¼Jan / Feb / Mar / Apr / May / Jun / Jul / Aug / Sep / Oct / Nov / Dec /ç§»é¤å符串ä¸çç©ºæ ¼
ä¸ä¾ä¸ï¼split()
æ¹æ³ä¼æ¥æ¾â0 æå¤ä¸ªç©ºç½å符æ¥çåå·ï¼åæ¥ç 0 æå¤ä¸ªç©ºç½åç¬¦âæ¨¡å¼çåç¬¦ä¸²ï¼æ¾å°åï¼å°±å°ç©ºç½ç¬¦ååå·ä»å符串ä¸ç§»é¤ï¼nameList
æ¯ split
çè¿åæ°ç»ã
const names = "Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand ";
console.log(names);
const re = /\s*(?:;|$)\s*/;
const nameList = names.split(re);
console.log(nameList);
ä¸ä¾è¾åºä¸¤è¡ï¼ç¬¬ä¸è¡è¾åºåå§å符串ï¼ç¬¬äºè¡è¾åºç»ææ°ç»ã
Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand [ "Harry Trump", "Fred Barney", "Helen Rigby", "Bill Abel", "Chris Hand", "" ]éå¶è¿åå¼ä¸åå²å ç´ æ°é
ä¸ä¾ä¸ï¼split
æ¥æ¾å符串ä¸ç 0 æå¤ä¸ªç©ºæ ¼ï¼å¹¶è¿åæ¾å°çå 3 个åå²å
ç´ ã
const myString = "Hello World. How are you doing?";
const splits = myString.split(" ", 3);
console.log(splits);
ä¸ä¾è¾åºï¼
["Hello", "World.", "How"]使ç¨
RegExp
æ¥åå²ä½¿ç»æä¸å
å«åå²ç¬¦
妿 separator
å
å«æè·æ¬å· ( )
ï¼åå
¶å¹é
ç»æå°ä¼å
å«å¨è¿åçæ°ç»ä¸ã
const myString = "Hello 1 word. Sentence number 2.";
const splits = myString.split(/(\d)/);
console.log(splits);
// [ "Hello ", "1", " word. Sentence number ", "2", "." ]
夿³¨ï¼ \d
å¹é
ä» 0 å° 9 çæ°åå符类ã
ä¸ä¸ªå
å« Symbol.split
æ¹æ³ç对象å¯ä»¥ç¨ä½åå²å¨ï¼å¯ä»¥èªå®ä¹åå²è¡ä¸ºã
ä¸é¢ç示ä¾ä½¿ç¨ä¸ä¸ªç±éå¢çæ°åç»æçå é¨ç¶ææ¥åå²ä¸ä¸ªå符串ï¼
const splitByNumber = {
[Symbol.split](str) {
let num = 1;
let pos = 0;
const result = [];
while (pos < str.length) {
const matchPos = str.indexOf(num, pos);
if (matchPos === -1) {
result.push(str.substring(pos));
break;
}
result.push(str.substring(pos, matchPos));
pos = matchPos + String(num).length;
num++;
}
return result;
},
};
const myString = "a1bc2c5d3e4f";
console.log(myString.split(splitByNumber)); // [ "a", "bc", "c5d", "e", "f" ]
ä¸é¢ç示ä¾ä½¿ç¨ä¸ä¸ªå é¨ç¶ææ¥å¼ºå¶æ§è¡æäºè¡ä¸ºï¼å¹¶ç¡®ä¿äº§çä¸ä¸ªâææâçç»æã
const DELIMITER = ";";
// åå²å½ä»¤ï¼ç§»é¤ä»»ä½ä¸åæ³æä¸éè¦çå¼
const splitCommands = {
[Symbol.split](str, lim) {
const results = [];
const state = {
on: false,
brightness: {
current: 2,
min: 1,
max: 3,
},
};
let pos = 0;
let matchPos = str.indexOf(DELIMITER, pos);
while (matchPos !== -1) {
const subString = str.slice(pos, matchPos).trim();
switch (subString) {
case "light on":
// 妿 `on` ç¶æå·²ç»ä¸º trueï¼ä»ä¹é½ä¸åã
if (!state.on) {
state.on = true;
results.push(subString);
}
break;
case "light off":
// 妿 `on` ç¶æå·²ç»ä¸º falseï¼ä»ä¹é½ä¸åã
if (state.on) {
state.on = false;
results.push(subString);
}
break;
case "brightness up":
// 亮度æä¸ä¸ªæå¤§å¼æ£æ¥
if (state.brightness.current < state.brightness.max) {
state.brightness.current += 1;
results.push(subString);
}
break;
case "brightness down":
// 亮度æä¸ä¸ªæå°å¼æ£æ¥
if (state.brightness.current > state.brightness.min) {
state.brightness.current -= 1;
results.push(subString);
}
break;
}
if (results.length === lim) {
break;
}
pos = matchPos + DELIMITER.length;
matchPos = str.indexOf(DELIMITER, pos);
}
// 妿å°è¾¾å岿é `lim`ï¼ä¸è¦æ·»å å©ä¸çå½ä»¤
if (results.length < lim) {
results.push(str.slice(pos).trim());
}
return results;
},
};
const commands =
"light on; brightness up; brightness up; brightness up; light on; brightness down; brightness down; light off";
console.log(commands.split(splitCommands, 3)); // ["light on", "brightness up", "brightness down"]
è§è æµè§å¨å
¼å®¹æ§ åè§
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4