Js基礎知識3-字元串、正則表達式全解

来源:https://www.cnblogs.com/7qin/archive/2018/09/08/9609286.html
-Advertisement-
Play Games

字元串的生成轉換 你可以將任何類型的數據都轉換為字元串,你可以用下麵三種方法的任何一種: 字元串轉化為其他類型 js提供了parseInt()和parseFloat()兩個轉換函數,Number也可以實現轉化 字元的操作 字元串增刪查改 字元串比較 比較兩個字元串,比較是規則是按照字母表順序比較的 ...


字元串的生成轉換

你可以將任何類型的數據都轉換為字元串,你可以用下麵三種方法的任何一種:

1 var num= 19;                    // 19
2 var myStr = num.toString();     // "19"
3 var myStr = String(num);        // "19"
4 var myStr = "" +num;            // "19"

字元串轉化為其他類型

js提供了parseInt()和parseFloat()兩個轉換函數,Number也可以實現轉化

 1 parseInt("1234blue");   //returns 1234 
 2 parseInt("0xA");        //returns 10 
 3 parseInt("22.5");       //returns 22 
 4 parseInt("blue");       //returns NaN
 5 parseInt("10", 2);      //returns 2 
 6 parseInt("10", 8);      //returns 8 
 7 parseInt("10", 10);     //returns 10
 8 parseInt("AF", 16);     //returns 175 
 9 parseFloat("1234blue"); //returns 1234.0 
10 parseFloat("0xA");      //returns NaN 
11 parseFloat("22.5");     //returns 22.5 
12 parseFloat("22.34.5");  //returns 22.34 
13 parseFloat("0908");     //returns 908 
14 parseFloat("blue");     //returns NaN
15 Number(false)           //0 
16 Number(true)            //1 
17 Number(undefined)       //NaN 
18 Number(null)            //0 
19 Number( "5.5 ")         //5.5 
20 Number( "56 ")          //56 
21 Number( "5.6.7 ")       //NaN 
22 Number(new Object())    //NaN 
23 Number(100)             //100

字元的操作

1 var myStr = "I,love,you,Do,you,love,me";
2 var theChar = str.charAt(8);                //獲取指定索引上的字元o
3 var theCharcode = myStr.charCodeAt(8);      //獲取指定索引上的字元編碼 111

字元串增刪查改

 1 //替換
 2 name = " Muaneng Tuanpeng ".trim();             //trim()刪除字元串前後空格
 3 name =name.replace("eng","ing");                //replace替換第一個eng成ing。
 4 name =name.replace(/eng/g,"ing");               //replace接收正則表達式,/g替換全部。
 5 
 6 //查詢
 7 var beginindex=name.indexOf("t",name.length-10);//indexOf和lastindexOf查詢子字元串的位置,第二個參數表示從哪個索引開始向對面搜索。length函數表示取字元串的長度。未查詢到時返回-1。
 8 var endindex = name.lastIndexOf("g",0);
 9 
10 //截取
11 var subStr = name.slice(1,5);                   //讀取子字元串,起始下標(包含),結束下標(不包含)
12 name1 = name.substring(beginindex,endindex);    //slice、substring參數為首尾下標,substr為起點下標和長度。都不改變源字元串。
13 name1 = name.substr(-4);                        //傳入負值時,slice將負值加上字元串長度,substr將第一個負值加上字元串長度,第二個負值轉為0,substring將負值都轉為0
14 
15 //拼接
16 name1 = name+"Yes"+1;                           //使用+號拼接字元串和數據成一個新的字元串
17 name1 = name.concat("yes");                     //也可以使用concat函數拼接字元串
18 
19 //大小寫轉換
20 var lowCaseStr = name.toLowerCase();            //全部轉換為小寫
21 var upCaseStr = name.toUpperCase();             //全部轉化為大寫

字元串比較 
比較兩個字元串,比較是規則是按照字母表順序比較的

var myStr = "chicken";
var myStrTwo = "egg";
var first = myStr.localeCompare(myStrTwo);      // -1,表示小於
first = myStr.localeCompare("chicken");         // 0,表示等於
first = myStr.localeCompare("apple");           // 1,表示大於

字元串分割

var myStr = "I,Love,You,Do,you,love,me";
var substrArray = myStr .split(",");            // ["I", "Love", "You", "Do", "you", "love", "me"];
var arrayLimited = myStr .split(",", 3)[0];     // split()的第二個參數,表示返回的字元串數組的最大長度。這裡取["I", "Love", "You"]數組的第一個元素,即"I";

正則法則 
正則表達式 = /pattern/flags 其中flags中g表示匹配全部,i表示不區分大小寫,m表示匹配多行。 
pattern包含 ([{\^$|)?*+.]}元字元,若匹配的字元串中包含元字元,使用\轉義。

var patter1 = /(.)u/gi;                 //正則表達式,標誌沒有,可為空,也可以使用var patter1 = new RegExp("pattern","flags"),使用new是創建對象
if(patter1.test(name)){                 //test查找符合要求的子串是否存在,返回true
    RegExp.input;               //原始字元串
    RegExp.leftContext;         //捕捉到的位置的左邊字元串
    RegExp.rightContext;        //捕捉到的位置的右邊字元串
    RegExp.lastMatch;           //返回最近一次與整個正則表達式匹配的字元串 mu
    RegExp.lastParen;           //返回最近一次捕捉的字元
    patter1.global;             //返回正則是否包含全局標誌g
}
var matches = patter1.exec(name);       //查找符合要求的子串。matches.index表示查找到的起始下標,matches.input表示輸入字元串。patter1.lastIndex表示查找到的結束下標,matches[0]表示查找到的第一個匹配項,若匹配項為全局模式,則每次調用返回下一個匹配項。

正則表達式字元

\ 做為轉義,即通常在"\"後面的字元不按原來意義解釋,如/b/匹配字元"b",當b前面加了反斜桿後/\b/,轉意為匹配一個單詞的邊界。 
-或- 
對正則表達式功能字元的還原,如"*"匹配它前面元字元0次或多次,/a*/將匹配a,aa,aaa,加了"\"後,/a\*/將只匹配"a*"。 

^ 匹配一個輸入或一行的開頭,/^a/匹配"an A",而不匹配"An a" 
$ 匹配一個輸入或一行的結尾,/a$/匹配"An a",而不匹配"an A" 
* 匹配前面元字元0次或多次,/ba*/將匹配b,ba,baa,baaa 
+ 匹配前面元字元1次或多次,/ba*/將匹配ba,baa,baaa 
? 匹配前面元字元0次或1次,/ba*/將匹配b,ba 
(x) 匹配x保存x在名為$1...$9的變數中 
x|y 匹配x或y 
{n} 精確匹配n次 
{n,} 匹配n次以上 
{n,m} 匹配n-m次 
[xyz] 字元集(character set),匹配這個集合中的任一一個字元(或元字元) 
[^xyz] 不匹配這個集合中的任何一個字元 
[\b] 匹配一個退格符 
\b 匹配一個單詞的邊界 
\B 匹配一個單詞的非邊界 
\cX 這兒,X是一個控制符,/\cM/匹配Ctrl-M 
\d 匹配一個字數字元,/\d/ = /[0-9]/ 
\D 匹配一個非字數字元,/\D/ = /[^0-9]/ 
\n 匹配一個換行符 
\r 匹配一個回車符 
\s 匹配一個空白字元,包括\n,\r,\f,\t,\v等 
\S 匹配一個非空白字元,等於/[^\n\f\r\t\v]/ 
\t 匹配一個製表符 
\v 匹配一個重直製表符 
\w 匹配一個可以組成單詞的字元(alphanumeric,這是我的意譯,含數字),包括下劃線,如[\w]匹配"$5.98"中的5,等於[a-zA-Z0-9] 
\W 匹配一個不可以組成單詞的字元,如[\W]匹配"$5.98"中的$,等於[^a-zA-Z0-9]。

字元串原型 
通過修改字元串的原型,可以為所有字元串添加公共函數。

1 String.prototype.startwith = function(text){    //設置字元串引用的原型,為String類型變數添加方法
2     return this.indexOf(text)==0;
3 };
4 var begin = name.startwith("mu");               //調用原型方法

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 安裝,轉載:https://www.imooc.com/article/68261 密碼忘記重置, 轉載:https://blog.csdn.net/gupao123456/article/details/80766154 ...
  • 學習大數據目前主要三個平臺hadoop,storm,spark 比如學hadoop,從哪兒開始學首先要根據你的基本情況而定,如果你就一小白,沒有任何開發基礎,也沒有學過任何開發語言,那就必須先從基礎java開始學起(大數據支持很多開發語言,但企業用的最多的還是JAVA),接下來學習數據結構、關係型數 ...
  • 索引的作用就是快速找出在一個列上用一特定值的行。如果沒有索引,MySQL不得不首先以第一條記錄開始並然後讀完整個表直到它找出相關的行。 索引的類型: 先寫一個建表語句: CREATE TABLE `t_order` ( `id` int(11) unsigned NOT NULL AUTO_INCR ...
  • 本地永久存儲字元串 從網上下載圖片信息然後存儲到本地 ...
  • 恢復內容開始 在不同類之間傳遞數據,我所學到的有三種,1.代理,2.block,3.通知。在這裡,我們先來講一下代理的使用,後面我會繼續講到block和通知。代理通常和協議是一起使用的,協議通常寫在代理類裡面,被代理的類要服從協議。 根據我的理解,在這種情況下:一個類裡面的數據需要在另一個類裡面實現 ...
  • 一、無繼承性的屬性 1、display:規定元素應該生成的框的類型 2、文本屬性: vertical-align:垂直文本對齊 text-decoration:規定添加到文本的裝飾 text-shadow:文本陰影效果 white-space:空白符的處理 unicode-bidi:設置文本的方向 ...
  • 本博文歸納在 Vue 學習過程中, Vue-cli 工具的使用說明。除此之外還通過 Vue-cli 工具將之前 Vuejs 基本語法當中實現的 todoList 進行重構。 安裝 創建 創建一個基於 webpack 模板的新項目,在此之前,先 cd Desktop 到桌面路徑 各選項簡介 安裝完畢之 ...
  • 《一統江湖的大前端》系列是自己的學習筆記,旨在介紹javascript在非網頁開發領域的應用案例和發現各類好玩的js庫,不定期更新。如果你對前端的理解還是寫寫頁面綁綁事件,那你真的是有點OUT了,前端能做的事情已經太多了, , , , , , 甚至 ,什麼火就搞什麼,絕對是專業的 蹭熱點小能手 。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...