## 一、概述
`String`對象是 JavaScript 原生提供的三個包裝對象之一,用來生成字符串對象。
~~~
var s1 = 'abc';
var s2 = new String('abc');
typeof s1 // "string"
typeof s2 // "object"
s2.valueOf() // "abc"
~~~
上面代碼中,變量`s1`是字符串,`s2`是對象。由于`s2`是字符串對象,`s2.valueOf`方法返回的就是它所對應的原始字符串。
## 二、靜態方法
### 2.1 String.fromCharCode()
該方法的參數是一個或多個數值,代表 Unicode 碼點,返回值是這些碼點組成的字符串。
~~~
String.fromCharCode() // ""
String.fromCharCode(97) // "a"
String.fromCharCode(104, 101, 108, 108, 111)
// "hello"
~~~
## 三、實例屬性
### 3.1 String.prototype.lenth
字符串實例的`length`屬性返回字符串的長度。
~~~
'abc'.length // 3
~~~
## 四、實例方法
### 4.1 String.prototype.charAt()
`charAt`方法返回指定位置的字符,參數是從`0`開始編號的位置。
~~~
var s = new String('abc');
s.charAt(1) // "b"
s.charAt(s.length - 1) // "c"
~~~
如果參數為負數,或大于等于字符串的長度,`charAt`返回空字符串。
~~~
'abc'.charAt(-1) // ""
'abc'.charAt(3) // ""
~~~
### 4.2 String.prototype.charCodeAt()
`charCodeAt`方法返回字符串指定位置的 Unicode 碼點(十進制表示),相當于`String.fromCharCode()`的逆操作。
~~~
'abc'.charCodeAt(1) // 98
~~~
上面代碼中,`abc`的`1`號位置的字符是`b`,它的 Unicode 碼點是`98`。
如果參數為負數,或大于等于字符串的長度,`charCodeAt`返回`NaN`。
~~~
'abc'.charCodeAt(-1) // NaN
'abc'.charCodeAt(4) // NaN
~~~
### 4.3 String.prototype.concat()
`concat`方法用于連接兩個字符串,返回一個新字符串,不改變原字符串。
~~~
var s1 = 'abc';
var s2 = 'def';
s1.concat(s2) // "abcdef"
s1 // "abc"
~~~
該方法可以接受多個參數。
~~~
'a'.concat('b', 'c') // "abc"
~~~
### 4.4 String.prototype.slice()
`slice`方法用于從原字符串取出子字符串并返回,不改變原字符串。它的第一個參數是子字符串的開始位置,第二個參數是子字符串的結束位置(不含該位置)。
~~~
'JavaScript'.slice(0, 4) // "Java"
~~~
如果省略第二個參數,則表示子字符串一直到原字符串結束。
~~~
'JavaScript'.slice(4) // "Script"
~~~
如果參數是負值,表示從結尾開始倒數計算的位置,即該負值加上字符串長度。
~~~
'JavaScript'.slice(-6) // "Script"
'JavaScript'.slice(0, -6) // "Java"
'JavaScript'.slice(-2, -1) // "p"
~~~
如果第一個參數大于第二個參數,`slice`方法返回一個空字符串。
~~~
'JavaScript'.slice(2, 1) // ""
~~~
### 4.5 String.prototype.substring()
`substring`方法用于從原字符串取出子字符串并返回,不改變原字符串,跟`slice`方法很相像。它的第一個參數表示子字符串的開始位置,第二個位置表示結束位置(返回結果不含該位置)。
~~~
'JavaScript'.substring(0, 4) // "Java"
~~~
如果省略第二個參數,則表示子字符串一直到原字符串的結束。
~~~
'JavaScript'.substring(4) // "Script"
~~~
如果第一個參數大于第二個參數,`substring`方法會自動更換兩個參數的位置。
~~~
'JavaScript'.substring(10, 4) // "Script"
// 等同于
'JavaScript'.substring(4, 10) // "Script"
~~~
如果參數是負數,`substring`方法會自動將負數轉為0。
~~~
'JavaScript'.substring(-3) // "JavaScript"
'JavaScript'.substring(4, -3) // "Java"
~~~
### 4.6 String.prototype.substr()
`substr`方法用于從原字符串取出子字符串并返回,不改變原字符串,跟`slice`和`substring`方法的作用相同。`substr`方法的第一個參數是子字符串的開始位置(從0開始計算),第二個參數是子字符串的長度。
~~~
'JavaScript'.substr(4, 6) // "Script"
~~~
如果省略第二個參數,則表示子字符串一直到原字符串的結束。
~~~
'JavaScript'.substr(4) // "Script"
~~~
如果第一個參數是負數,表示倒數計算的字符位置。如果第二個參數是負數,將被自動轉為0,因此會返回空字符串。
~~~
'JavaScript'.substr(-6) // "Script"
'JavaScript'.substr(4, -1) // ""
~~~
### 4.7 String.prototype.indexOf(), String.prototype.lastIndexOf()
`indexOf`方法用于確定一個字符串在另一個字符串中第一次出現的位置,返回結果是匹配開始的位置。如果返回`-1`,就表示不匹配。
~~~
'hello world'.indexOf('o') // 4
'JavaScript'.indexOf('script') // -1
~~~
`indexOf`方法還可以接受第二個參數,表示從該位置開始向后匹配。
~~~
'hello world'.indexOf('o', 6) // 7
~~~
`lastIndexOf`方法的用法跟`indexOf`方法一致,主要的區別是`lastIndexOf`從尾部開始匹配,`indexOf`則是從頭部開始匹配。
~~~
'hello world'.lastIndexOf('o') // 7
~~~
另外,`lastIndexOf`的第二個參數表示從該位置起向前匹配。
~~~
'hello world'.lastIndexOf('o', 6) // 4
~~~
### 4.8 String.prototype.trim()
`trim`方法用于去除字符串兩端的空格,返回一個新字符串,不改變原字符串。
~~~
' hello world '.trim() // "hello world"
~~~
該方法去除的不僅是空格,還包括制表符(`\t`、`\v`)、換行符(`\n`)和回車符(`\r`)。
### 4.9 String.prototype.toLowerCase(), String.prototype.toUpperCase()
`toLowerCase`方法用于將一個字符串全部轉為小寫,`toUpperCase`則是全部轉為大寫。它們都返回一個新字符串,不改變原字符串。
~~~
'Hello World'.toLowerCase() // "hello world"
'Hello World'.toUpperCase() // "HELLO WORLD"
~~~
- 階段一 Java 零基礎入門
- 步驟1:基礎語法
- 第01課 初識
- 第02課 常量與變量
- 第03課 運算符
- 第04課 選擇結構
- 第05課 循環結構
- 第06課 一維數組
- 第08課 方法
- 第09課 數組移位與統計
- 第10課 基礎語法測試
- 第09課 基礎語法測試(含答案)
- 步驟2:面向對象
- 第01課 類和對象
- 第02課 封裝
- 第03課 學生信息管理
- 第04課 繼承
- 第05課 單例模式
- 第06課 多態
- 第07課 抽象類
- 第08課 接口
- 第09課 內部類
- 第10課 面向對象測試
- 第10課 面向對象測試(含答案)
- 步驟3:常用工具類
- 第01課 異常
- 第02課 包裝類
- 第03課 字符串
- 第04課 集合
- 第05課 集合排序
- 第06課 泛型
- 第07課 多線程
- 第08課 輸入輸出流
- 第09課 案例:播放器
- 第10課 常用工具測試(一)
- 第10課 常用工具測試(一)(答案)
- 第10課 常用工具測試(二)
- 第10課 常用工具測試(二)(答案)
- 階段二 從網頁搭建入門 JavaWeb
- 步驟1:HTML 與 CSS
- 第01課 HTML 入門
- 第01課 HTML 入門(作業)
- 第02課 CSS 入門
- 第02課 CSS 入門(作業)
- 第03課 CSS 布局
- 第03課 CSS 布局(作業)
- 步驟2:JavaScript 與前端案例
- 第01課 JavaScript 入門
- 第01課 JavaScript 入門(作業)
- 第02課 仿計算器
- 第03課 前端油畫商城案例
- 第04課 輪播圖
- 第05課 網頁搭建測試
- 第05課 網頁搭建測試(含答案)
- 步驟3:JavaScript 教程
- 入門
- 概述
- 基本語法
- 數據類型
- 概述
- 數值
- 字符串
- undefined, null 和布爾值
- 對象
- 函數
- 數組
- 運算符
- 算術運算符
- 比較運算符
- 布爾運算符
- 位運算符
- 運算順序
- 語法專題
- 數據類型的轉換
- 錯誤處理機制
- 標準庫
- String
- Date
- Math
- DOM
- 概述
- Document 節點
- 事件
- EventTarget 接口
- 事件模型
- 常見事件
- 階段三 數據庫開發與實戰
- 步驟1:初始數據庫操作
- 第01課 數據類型
- 第02課 表的管理
- 第03課 數據管理
- 第04課 常用函數
- 第05課 JDBC 入門
- 第06課 Java 反射
- 第07課 油畫商城
- 第08課 數據庫基礎測試
- 步驟2:MyBatis 從入門到進階
- 第01課 IntelliJ IDEA 開發工具入門
- 第02課 Maven 入門
- 第03課 工廠模式
- 第04課 MyBatis 入門
- 第05課 MyBatis 進階
- 第06課 商品信息管理
- 第07課 MyBatis 基礎測試
- 步驟3:Redis 數據庫與 Linux 下項目部署
- 第01課 Linux 基礎
- 第02課 Linux 下 JDK 環境搭建及項目部署
- 第03課 Redis 入門
- 階段四 SSM 到 Spring Boot 入門與綜合實戰
- 步驟1:Spring 從入門到進階
- 第01課 Spring 入門
- 第02課 Spring Bean 管理
- 第03課 Spring AOP
- 第04課 基于 AspectJ 的 AOP 開發
- 第05課 JDBC Template
- 第06課 Spring 事務管理
- 第07課 人員管理系統開發
- 第08課 Spring 從入門到進階測試
- 步驟2:Spring MVC 入門與 SSM 整合開發
- 第01課 Spring MVC 入門與數據綁定
- 第02課 Restful 風格的應用
- 第03課 SpringMVC 攔截器
- 第04課 辦公系統核心模塊
- 步驟3:Spring Boot 實戰
- 第01課 Spring Boot 入門
- 第02課 校園商鋪項目準備
- 第03課 校園商鋪店鋪管理
- 第04課 校園商鋪商品管理及前臺展示
- 第05課 校園商鋪框架大換血
- 步驟4:Java 面試
- 第01課 面試準備
- 第02課 基礎面試技巧
- 第03課 Web基礎與數據處理
- 第04課 主流框架