当前位置: 首页 > Web前端 > JavaScript

新的ES6API:字符串(二)

时间:2023-03-27 18:30:45 JavaScript

鏈枃浠嬬粛浜咵S6涓璾nicode瀛楃涓茬殑鍑犱釜鏂板嚱鏁般€係tring.prototype.codePointAt鍑芥暟绫诲瀷锛?index?:number)=>number|undefinedcodePointAt鏄竴涓師鍨嬪嚱鏁帮紝鏍规嵁浼犲叆鐨刬ndex鍙傛暟杩斿洖瀛楃涓蹭腑璇ヤ綅缃瓧绗︾殑浠g爜鐐癸紙codepoint锛夊€?璇ユ柟娉曞彲浠ヨ瘑鍒玼tf-16涓殑4瀛楄妭鐮佷綅锛屾瘮鍘熷瀷鍑芥暟charCodeAt鏀寔鐨勮寖鍥存洿骞匡紝鍚庤€呭彧鑳借瘑鍒?瀛楄妭鐨勫熀鏈钩闈㈠瓧绗︼紙BMP锛夈€傚彟澶栵紝褰撶储寮曡秺鐣屾椂锛宑odePointAt杩斿洖undefined锛宑harCodeAt杩斿洖NaN銆傞櫎浜嗚繖涓ょ偣锛宑odePointAt鍜宑harCodeAt鐨勭粨鏋滃熀鏈浉鍚岋細index鍙傛暟鐨勯粯璁ゅ€间负0銆傚綋瀛楃鍦ㄥ熀鏈墎骞冲瓧绗﹂泦涓椂锛屼袱鑰呰繑鍥炵殑缁撴灉鏄浉鍚岀殑銆俢onststr='abc';//瀛楃'a'鍦ㄥ熀鏈钩闈㈠瓧绗﹂泦涓璫onsole.log(str.codePointAt(0));//97//index榛樿鍊间负0console.log(str.codePointAt());//97//褰搃ndex瓒婄晫鏃讹紝杩斿洖undefinedconsole.log(str.codePointAt(5));//undefinedconsole.log(str.charCodeAt(0));//97//index鐨勯粯璁ゅ€糹s0console.log(str.charCodeAt());//97//绱㈠紩瓒婄晫鏃讹紝杩斿洖NaNconsole.log(str.charCodeAt(5));//NaN瀛楃鍦ㄨ緟鍔╁钩闈㈠瓧绗︽椂璁剧疆鍚庯紝codePointAt鍙互姝g‘璇嗗埆骞惰繑鍥炲搴斿瓧绗︾殑浠g爜鐐癸紙codepoint锛夈€俢harCodeAt鏃犳硶姝g‘璇嗗埆锛屽彧鑳借繑鍥炲綋鍓嶄綅缃?瀛楄妭瀛楃鐨勭爜浣嶃€備緥濡傦紝瀵逛簬瀛愬钩闈㈢殑楂橀煶瀛楃饾劄锛屽畠鐢变袱涓?瀛楄妭鐨勫熀骞抽潰瀛楃0xd834鍜?xdd1e琛ㄧず銆傚綋鎴戜滑瀵桂潉炰娇鐢╟harCodeAt鏃讹紝鍙兘寰楀埌瀵瑰簲浣嶇疆鐨刢odepoint銆俢onststr='\ud834\udd1e';//杈呭姪骞抽潰瀛楃楂橀煶瀛楃饾劄console.log(str.charCodeAt(0).toString(16));//d834console.log(str.charCodeAt(1).toString(16));//dd1e褰撴垜浠娇鐢╟odePointAt鏃讹紝鎴戜滑鍙互寰楀埌饾劄鐨勪唬鐮佺偣0x1d11e銆俢onsole.log(str.codePointAt(0).toString(16));//1d11e//褰撶储寮曚负1鏃讹紝'\udd1e'鍚庢病鏈夊叾浠栫爜浣嶏紝璁や负鍙槸涓€涓?瀛楄妭鐨勫瓧绗︼紝骞朵笉鏄竴瀵圭爜浣嶏紝鎵€浠ュ彧鏈夌爜浣嶆鏃惰繑鍥炵殑鏄?\udd1e'鐨勪唬鐮佺偣锛屼笉鏄?\ud834\udd1e'鐨勪唬鐮佺偣console.log(str.codePointAt(1).toString(16));//dd1eString.fromCodePointfunctiontype:(...codePoints:number[])=>string闈欐€佸嚱鏁癴romCodePoint鏍规嵁浼犲叆鐨剈nicode鐮佺偣杩斿洖瀵瑰簲鐨勫瓧绗︿覆锛岀浉姣攆romCharCode鏀寔鐩存帴浼犲叆杈呭姪浣嶉潰鍊煎緱銆傝繕鏄互楂橀煶绗﹀彿饾劄涓轰緥锛屼娇鐢╢romCodePoint鍙互鐩存帴浼犲叆鐮佷綅鍊?x1d11e锛岃€宖romCharCode鍊奸渶瑕佷紶鍏?xd834鍜?xdd1e銆俢onsole.log(String.fromCodePoint(0x1d11e));//饾劄console.log(String.fromCodePoint(0xd834,0xdd1e));//饾劄console.log(String.fromCharCode(0x1d11e));//韯炴棤娉曟纭瘑鍒紝涔辩爜console.log(String.fromCharCode(0xd834,0xdd1e));//饾劄瀵逛簬鍩烘湰骞抽潰瀛楃锛宖romCodePoint鍜宖romCharCode鐨勭粨鏋滄槸涓€鏍风殑銆俢onsole.log(String.fromCodePoint(97));//'a'console.log(String.fromCodePoint(97,98));//'ab'console.log(String.fromCodePoint());//''console.log(String.fromCharCode(97));//'a'console.log(String.fromCharCode(97,98));//'ab'console.log(String.fromCharCode());//''String.prototype.normalizefunctiontype:(form:'NFC'|'NFD'|'NFKC'|'NFKD')=>stringprototypefunctionnormalize鎺ュ彈涓€涓寚瀹氱殑瑙勮寖鍖栵紙濡傛灉浣犱笉鎳侼FC锛孨FD绛夊惈涔夛紝鐐瑰嚮锛塮orm鍙傛暟form锛宖orm榛樿鍊间负'NFC'锛圢ormalizationFormCanonicalComposition锛屾寜鏍囧噯绛夋晥鏂瑰紡鍒嗚В锛岀劧鍚庢寜鏍囧噯绛夋晥鏂瑰紡閲嶆柊缁勫悎锛夛紝杩斿洖瑙勮寖鍖栧瓧绗︿覆銆俇nicode涓哄鍚堢鍙凤紙瀛楃涓殑瀛楁瘝甯︽湁闄勫姞绗﹀彿濡傚0璋冿級鎻愪緵浜嗕袱绉嶈〃绀猴紝涓€绉嶆槸浣跨敤unicode鐮佷綅琛ㄧず锛屽彟涓€绉嶆槸澶嶅悎瀛楃涓殑瀛楁瘝涓庨檮鍔犵鍙风粍鍚堬紝浣跨敤涓や釜鐮佷綅锛屽鐢变簬艅鏄竴涓鍚堢鍙凤紝鎴戜滑鍙互浣跨敤涓€涓唬鐮佺偣0x0144鏉ヨ〃绀哄畠锛屼篃鍙互浣跨敤涓や釜浠g爜鐐?x006e鍜?x0301鏉ヨ〃绀哄畠銆俢onststr1='\u0144';//艅conststr2='\u006e\u0301';//艅console.log({str1,str2,});//{str1:'艅',str2:'艅'}杩欎袱绉嶈〃绀哄湪瑙嗚鍜岃涔変笂鏄浉鍚岀殑锛屽苟涓斿畠浠湪瑙勮寖涓婃槸绛変环鐨勩€備絾鏄湪浠g爜灞傞潰涓婂畠浠槸涓嶅悓鐨勶紝str1鏄竴涓猚odepoint锛宻tr2鏄袱涓猚odepoint锛岃繖寰堝鏄撳嚭闂銆俢onsole.log(str1.length,str2.length);//12console.log(str1===str2);//falsenormalize鍑芥暟灏辨槸涓轰簡瑙e喅杩欎釜闂锛屼袱涓瓧绗︿覆缁忚繃normalize鍑芥暟褰掍竴鍖栧悗锛岃繖涓棶棰樺氨娌℃湁浜嗗彂鐢熺殑鏃堕棿鏇撮暱銆傝str1='\u0144';//璁﹕tr2='\u006e\u0301';//艅//鏍囧噯鍖杝tr1=str1.normalize();str2=str2.normalize();console.log({str1,str2,});//{str1:'艅',str2:'艅'}console.log(str1.length,str2.length);//11console.log(str1===str2);//true鏂板unicode琛ㄧず鏂规硶涔嬪墠鎴戜滑琛ㄧずunicode瀛楃鍙互鐢╘u+鐮佷綅鏉ヨ〃绀恒€侲S6澧炲姞浜嗕竴绉嶆柊鐨勮〃绀烘柟寮忥紝鍗砛u+{codepoint}銆傝繖涓ょ鏂瑰紡鐨勫尯鍒篃寰堝鏄撴兂璞★紝\u+{codepoint}鏀寔鍐欏叆杈呭姪骞抽潰鐨?瀛楄妭codepoint锛岃€孿u+codepoint鍙敮鎸佸熀鏈钩闈㈢殑2bytecodepoint銆?/瀵逛簬鍩烘湰骞抽潰鐨?瀛楄妭鐮佷綅锛屼袱鑰呮病鏈夊尯鍒玞onststr1='\u{0144}';conststr2='\u0144';鎺у埗鍙版棩蹇楋紙str1===str2锛夛紱//true//楂橀煶绗﹀彿conststr3='\u{1d11e}';//琛ㄧず鏂规硶閿欒锛岃瘑鍒负涓や釜瀛楃\u1d11鍜宔conststr4='\u1d11e';console.log(str4,str3===str4);//岽慹falseunicode鐪熻浜哄ご鐤笺€傚鏋滄湁瀵箄nicode涓嶅お浜嗚В鐨勬湅鍙嬶紝鍙互鍦ㄨ瘎璁哄尯鐣欒█锛屾垜浼氬啀鍙戜竴绡囪缁嗕粙缁島nicode鍜孞S鐨勬枃绔犮€?/p>