1. 主页 > 好文章

高效处理字符串分割!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>鈥嬶細鍏堝仛杩?姝ラ澶勭悊

  1. 鐢╮eplace缁熶竴鏇挎崲鍏ㄨ绗﹀彿
  2. 鐢╰rim()鍘绘帀棣栧熬绌烘牸
  3. 鐢ㄦ鍒?[^\x00-\xff]/g杩囨护寮傚父瀛楃

浜屻€佷笁澶х鍣ㄥ姣旀祴璇?/h3>

鏈€杩戠粰鏌愮數鍟嗛」鐩仛浼樺寲锛屽彂鐜板悎鐞嗛€夋嫨鍒囧壊鏂规硶鑳借鎺ュ彛鍝嶅簲閫熷害鎻愬崌3鍊嶏紒鐪嬫暟鎹細

鏂规硶10涓囨鎵ц鑰楁椂鍐呭瓨鍗犵敤鐗规畩鍦烘櫙鏀寔
split120ms杈冧綆鍥哄畾鍒嗛殧绗?/td>
match450ms杈冮珮澶嶆潅姝e垯
substring80ms鏈€浣?/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銆備粬浠殑鐙棬缁濇妧鏄細

  1. 鈥?strong>鈥嬮澶勭悊缂撳瓨鈥?/strong>鈥嬶細鎻愬墠澶勭悊楂橀浣跨敤鐨勫瓧绗︿覆妯℃澘
  2. 鈥?strong>鈥媁eb Worker鍒嗘祦鈥?/strong>鈥嬶細10涓囨潯鏁版嵁鍒囧壊浜ょ粰鍚庡彴绾跨▼
  3. 鈥?strong>鈥嬫爲鐘跺垏鍓叉硶鈥?/strong>鈥嬶細瀵硅秴闀挎枃鏈厛鍒嗘鍐嶅鐞?/li>

涓嶈繃璇村彞瀹炲湪璇濓紝鍜变滑鏃ュ父寮€鍙戠敤涓嶄笂杩欎箞澶嶆潅鐨勬搷浣溿€傝浣忚繖涓師鍒欏氨琛岋細鈥?strong>鈥嬭兘灏戝垏涓€娆″氨灏戝垏涓€娆★紝鍘熺敓鏂规硶姘歌繙姣旂涓夋柟搴撳揩锛佲€?/strong>鈥?/p>


璇寸偣寰楃姜浜虹殑澶у疄璇?/h3>

骞蹭簡涓冨勾寮€鍙戯紝鍙戠幇寰堝绋嬪簭鍛橀兘瀛樺湪"鏂规硶宕囨嫓鐥?銆傚墠涓ゅぉ鐪嬭鏈変汉鐢ㄦ鍒欏垏鍓茬畝鍗曞瓧绗︿覆锛屾垜褰撳満琛€鍘嬪氨涓婃潵浜嗭紒鏍规嵁2023骞碨tackOverflow缁熻锛?0%鐨勫瓧绗︿覆澶勭悊闂鍏跺疄鐢╯ubstring鍜宻plit灏辫兘鎼炲畾銆?/p>

鏈€鍚庨€佸ぇ瀹朵竴涓浼犲彛璇€锛?/p>

  • 鍥哄畾鍒嗛殧鐢╯plit
  • 绮剧‘瀹氫綅鐢╯lice
  • 澶嶆潅瑙勫垯涓婃鍒?/li>
  • 瀹炲湪涓嶈...灏辨壘鍚庣鏀规帴鍙o紒锛堟墜鍔ㄧ嫍澶达級

本文由嘻道妙招独家原创,未经允许,严禁转载