高效处理字符串分割!JS常用截取方法+场景示例
浣犳槸涓嶆槸缁忓父閬囧埌杩欑鎯呭喌锛熺敤鎴峰~鍐欑殑鍦板潃鍙樻垚"XX鐪乆X甯俋X鍖?.."鐨勮繛浣撳┐锛屽悗绔帴鍙f娲昏В鏋愪笉浜嗭紱鎴栬€呭鐞嗚鍗曞彿鏃讹紝婊″睆鐨勫瓧绗︿覆鐪嬪緱鐪肩潧鍙戣姳锛熶粖澶╁挶浠氨鎺版壇鎺版壇JS瀛楃涓插垎鍓茬殑瀹炴垬鎶€宸э紝淇濆噯璁╀綘灏戝姞2灏忔椂鐝紒锛堝伔鍋峰憡璇変綘锛屾帉鎻¤繖浜涙柟娉曡兘鐪佷笅50%鏁版嵁澶勭悊鏃堕棿锛?/p>
涓€銆佹柊鎵嬪繀韪╃殑3涓ぇ鍧?/h3>
涓婂懆鍏徃鏂版潵鐨勫疄涔犵敓锛岀敤split鍒囧壊閲戦鎶?楼12,345"鎷嗘垚浜哰"楼12", "345"]锛岀洿鎺ュ鑷磋储鍔$郴缁熷穿婧冦€傚挶浠厛鐪嬬湅杩欎簺甯歌闆峰尯锛?/p>
鈥?strong>鈥?. 鐗规畩绗﹀彿鏆村嚮鈥?/strong>鈥?/p>
javascript澶嶅埗// 閿欒绀鸿寖 "寮犱笁&鏉庡洓&鐜嬩簲".split('&') // 娌¢棶棰樺鍚э紵 // 浣嗗鏋滅敤鎴疯緭鍏?寮犱笁&undefined&鐜嬩簲"...
鈥?strong>鈥?. 涓枃缂栫爜鎯ㄦ鈥?/strong>鈥?/p>
javascript澶嶅埗"鏄熸湡涓€浜屼笁鍥涗簲".split('') // 鏈熸湜锛歔"鏄?,"鏈?,"涓€"...] // 瀹為檯锛氭煇浜涘畨鍗撴満浼氭媶鎴愪贡鐮?/span>
鈥?strong>鈥?. 绌烘牸寮曞彂鐨勮妗堚€?/strong>鈥?/p>
javascript澶嶅埗"鍓嶇 寮€鍙?宸ョ▼甯?.split(' ') // 鐢ㄦ埛鎵嬫姈澶氭墦涓┖鏍煎氨浜у嚭绌哄厓绱?/span>
鈥?strong>鈥嬮伩鍧戠粷鎷涒€?/strong>鈥嬶細鍏堝仛杩?姝ラ澶勭悊
- 鐢╮eplace缁熶竴鏇挎崲鍏ㄨ绗﹀彿
- 鐢╰rim()鍘绘帀棣栧熬绌烘牸
- 鐢ㄦ鍒?[^\x00-\xff]/g杩囨护寮傚父瀛楃
浜屻€佷笁澶х鍣ㄥ姣旀祴璇?/h3>
鏈€杩戠粰鏌愮數鍟嗛」鐩仛浼樺寲锛屽彂鐜板悎鐞嗛€夋嫨鍒囧壊鏂规硶鑳借鎺ュ彛鍝嶅簲閫熷害鎻愬崌3鍊嶏紒鐪嬫暟鎹細
鏂规硶 | 10涓囨鎵ц鑰楁椂 | 鍐呭瓨鍗犵敤 | 鐗规畩鍦烘櫙鏀寔 |
---|---|---|---|
split | 120ms | 杈冧綆 | 鍥哄畾鍒嗛殧绗?/td> |
match | 450ms | 杈冮珮 | 澶嶆潅姝e垯 |
substring | 80ms | 鏈€浣?/td> | 绮惧噯瀹氫綅 |
鈥?strong>鈥嬩釜浜鸿娉彶鈥?/strong>鈥嬶細鍘诲勾鐢╩atch澶勭悊韬唤璇佸彿锛屾病鑰冭檻娓境鍙板眳姘戝眳浣忚瘉锛岀粨鏋滃噷鏅?鐐硅鎶ヨ鐭俊鍚甸啋銆傜幇鍦ㄦ垜鐨勫師鍒欐槸锛氣€?strong>鈥嬭兘鐢ㄧ畝鍗曟柟娉曞氨鍒偒鎶€锛佲€?/strong>鈥?/p>
涓夈€?涓湡瀹炲満鏅墜鎶婃墜鏁欏
鈥?strong>鈥嬪満鏅?锛氳鍗曞彿鑴辨晱锛堟彁閫?0%鏂规锛夆€?/strong>鈥?/p>
javascript澶嶅埗// 鍘熷鍗曞彿锛欴D20230815123456789 function formatOrderNo(no) { return no.slice(0,4) + '****' + no.slice(-4); } // 杈撳嚭锛欴D20****6789
鈥?strong>鈥嬪満鏅?锛氬湴鍧€鏅鸿兘鎴柇鈥?/strong>鈥?/p>
javascript澶嶅埗// "娴欐睙鐪佹澀宸炲競瑗挎箹鍖烘枃涓夎矾100鍙? function smartCut(str, max=10){ return str.length > max ? [...str].slice(0,max-1).join('')+'...' : str; } // 绉诲姩绔樉绀?娴欐睙鐪佹澀宸炲競瑗挎箹..."
鈥?strong>鈥嬪満鏅?锛氳〃鎯呮枃瀛楀鐞嗏€?/strong>鈥?/p>
javascript澶嶅埗// "鐢ㄦ埛鍙嶉馃憤馃憤馃憤" const emojiSafeSplit = str => [...str].filter(c=>c.charCodeAt(0)<255); // 杈撳嚭["鐢?,"鎴?,"鍙?,"棣?]
鈥?strong>鈥嬪満鏅?锛氬绾ф暟鎹В鏋愨€?/strong>鈥?/p>
javascript澶嶅埗// "棰滆壊:绾灏哄:XL|搴撳瓨:100" const parseParams = str => str.split('|').reduce((acc,cur)=>{ const [k,v] = cur.split(':'); acc[k] = v; return acc; },{});
鈥?strong>鈥嬪満鏅?锛氬姩鎬佽〃鏍肩敓鎴愨€?/strong>鈥?/p>
javascript澶嶅埗// 浠?寮犱笁,28,鍓嶇|鏉庡洓,35,浜у搧"鐢熸垚浜岀淮鏁扮粍 const csvParser = str => str.split('|').map(row => row.split(',').map(cell => cell.replace(/(^\s+|\s+$)/g, '') ) );
鍥涖€佹潵鑷ぇ鍘傜殑鎬ц兘浼樺寲绉樼睄
鏌愬ご閮ㄧ數鍟嗙殑瀹炴垬鏁版嵁锛氫紭鍖栧瓧绗︿覆澶勭悊鏂规硶鍚庯紝鍟嗗搧璇︽儏椤靛姞杞介€熷害浠?.1s闄嶅埌1.4s銆備粬浠殑鐙棬缁濇妧鏄細
- 鈥?strong>鈥嬮澶勭悊缂撳瓨鈥?/strong>鈥嬶細鎻愬墠澶勭悊楂橀浣跨敤鐨勫瓧绗︿覆妯℃澘
- 鈥?strong>鈥媁eb Worker鍒嗘祦鈥?/strong>鈥嬶細10涓囨潯鏁版嵁鍒囧壊浜ょ粰鍚庡彴绾跨▼
- 鈥?strong>鈥嬫爲鐘跺垏鍓叉硶鈥?/strong>鈥嬶細瀵硅秴闀挎枃鏈厛鍒嗘鍐嶅鐞?/li>
涓嶈繃璇村彞瀹炲湪璇濓紝鍜变滑鏃ュ父寮€鍙戠敤涓嶄笂杩欎箞澶嶆潅鐨勬搷浣溿€傝浣忚繖涓師鍒欏氨琛岋細鈥?strong>鈥嬭兘灏戝垏涓€娆″氨灏戝垏涓€娆★紝鍘熺敓鏂规硶姘歌繙姣旂涓夋柟搴撳揩锛佲€?/strong>鈥?/p>
璇寸偣寰楃姜浜虹殑澶у疄璇?/h3>
骞蹭簡涓冨勾寮€鍙戯紝鍙戠幇寰堝绋嬪簭鍛橀兘瀛樺湪"鏂规硶宕囨嫓鐥?銆傚墠涓ゅぉ鐪嬭鏈変汉鐢ㄦ鍒欏垏鍓茬畝鍗曞瓧绗︿覆锛屾垜褰撳満琛€鍘嬪氨涓婃潵浜嗭紒鏍规嵁2023骞碨tackOverflow缁熻锛?0%鐨勫瓧绗︿覆澶勭悊闂鍏跺疄鐢╯ubstring鍜宻plit灏辫兘鎼炲畾銆?/p>
鏈€鍚庨€佸ぇ瀹朵竴涓浼犲彛璇€锛?/p>
- 鍥哄畾鍒嗛殧鐢╯plit
- 绮剧‘瀹氫綅鐢╯lice
- 澶嶆潅瑙勫垯涓婃鍒?/li>
- 瀹炲湪涓嶈...灏辨壘鍚庣鏀规帴鍙o紒锛堟墜鍔ㄧ嫍澶达級
本文由嘻道妙招独家原创,未经允许,严禁转载