JavaScript字符串詳解

創建字符串:

1.使用字面量(推薦)
這是最常用、最直接的方式。你可以用單引號 (')、雙引號 (") 或反引號 (`) 把文本包起來

let singleQuote = '單引號';
let doubleQuote = "雙引號"; 
let templateLiteral = `反引號`;

2.使用String 構造函數(不推薦)
這種方式會創建一個字符串對象 (Object),而不是一個基本類型的值,可能會在比較時產生意想不到的結果。

let strObject = new String("這是一個字符串對象");
console.log(typeof strObject); // "object" 
let strLiteral = "這是一個字符串字面量"; 
console.log(typeof strLiteral); // "string"
字符串的不可變性:

一旦一個字符串被創建,它的內容就永遠無法被改變。

let greeting = "Hello"; 
greeting = greeting + ", World!"; // 拼接 
console.log(greeting); // "Hello, World!"

表面上看,greeting 變量的值被改變了。但實際上,內存中發生的事情是:greeting + ", World!" 創建了一個全新的字符串 "Hello, World!"。然后 greeting 變量的“指針”從舊的 "Hello" 指向了這個新的字符串。

字符串的屬性和方法:
charAt(index)
  • 功能: 返回字符串中指定索引位置的單個字符。
  • 參數:index (必需): 一個整數,表示你想要獲取的字符的索引 (從 0 開始)。
  • 返回值: 一個只包含單個字符的新字符串。如果 index 超出范圍,返回一個空字符串 “”。
let str = "JavaScript";  
// 獲取第一個字符  
console.log(str.charAt(0)); // "J"  
// 獲取第五個字符  
console.log(str.charAt(4)); // "S"  
// 如今更常用方括號 str[0] 的寫法,但它在索引越界時返回 undefined。
slice(startIndex, endIndex)
  • 功能: 提取字符串的一個片段,并以新字符串的形式返回它,原始字符串不會被修改。
  • 參數: startIndex (必需): 開始提取的索引。如果為負數,則從字符串尾部開始計算。
  • endIndex (可選): 結束提取的索引 (該索引處的字符不被包含)。如果省略,則提取到字符串末尾。如果為負數,也從尾部計算。
  • 返回值: 包含提取部分的新字符串。
let text = "The quick brown fox";  
// 提取 "quick"  
console.log(text.slice(4, 9)); // "quick"  
// 從索引 10 到末尾  
console.log(text.slice(10)); // "brown fox"  
// 提取最后 3 個字符  
console.log(text.slice(-3)); // "fox"
substring(startIndex, endIndex)
  • 功能: 與 slice() 類似,提取字符串的片段并返回。
  • 參數:startIndex (必需): 開始提取的索引。
  • endIndex (可選): 結束提取的索引 (不包含)。
  • 返回值: 包含提取部分的新字符串。
  • 與 slice() 的核心區別:
  1. 不支持負數索引:任何負數參數都會被視為 0。
  2. 參數位置可互換:如果 startIndex 大于 endIndex,方法會自動交換這兩個參數。
let str = "Mozilla";  
console.log(str.substring(1, 4)); // "ozi"  
// 自動交換參數 4 和 1  
console.log(str.substring(4, 1)); // "ozi"  
// 負數被視為 0  
console.log(str.substring(-2, 4)); // "Mozi" (相當于 substring(0, 4)) 
includes(searchValue, position)
  • 功能: 判斷一個字符串是否包含另一個指定的子字符串。
  • 參數: searchValue (必需): 要查找的子字符串。
  • position (可選): 開始搜索的索引位置,默認為 0。
  • 返回值: true (如果找到) 或 false (如果未找到)。
let sentence = "Hello, welcome to the universe.";  
console.log(sentence.includes("welcome")); // true  
console.log(sentence.includes("world"));   // false  
// 從索引 8 開始搜索 "welcome"  
console.log(sentence.includes("welcome", 8)); // true  
indexOf(searchValue, fromIndex)
  • 功能:查找指定子字符串首次出現的索引。
  • 參數:searchValue (必需): 要查找的子字符串。
  • fromIndex (可選): 開始搜索的起始索引,默認為 0。
  • 返回值: 第一個匹配項的索引。如果未找到,則返回 -1。
let paragraph = "The quick brown fox jumps over the lazy dog. If the dog barked, was it a quick dog?";  
// 查找第一個 "dog"  
console.log(paragraph.indexOf("dog")); // 40  
// 從索引 41 之后開始查找 "dog"  
console.log(paragraph.indexOf("dog", 41)); // 72  
// 查找一個不存在的詞  
console.log(paragraph.indexOf("cat")); // -1  
lastIndexOf(searchValue, fromIndex)
  • 功能: 與 indexOf() 類似,但它是從字符串的末尾向前搜索,返回最后一次出現的索引。
  • 參數:searchValue (必需): 要查找的子字符串。
  • fromIndex (可選): 從該索引處開始向前搜索。默認為字符串的長度。
  • 返回值: 最后一個匹配項的索引,未找到則返回 -1
let paragraph = "The quick brown fox jumps over the lazy dog. If the dog barked, was it a quick dog?";  
console.log(paragraph.lastIndexOf("dog")); // 72  
startsWith(searchString, position)
  • 功能: 判斷當前字符串是否以另一個給定的子字符串開頭。
  • 參數:searchString (必需): 要搜索的子字符串。
  • position (可選): 開始搜索的索引位置,默認為 0。
  • 返回值: true 或 false。
let str = "To be, or not to be, that is the question.";  
console.log(str.startsWith("To be")); // true  
// 檢查從索引 14 開始的子串是否以 "that" 開頭  
console.log(str.startsWith("that", 24)); // true  
endsWith(searchString, length)
  • 功能: 判斷當前字符串是否以另一個給定的子字符串結尾。
  • 參數:searchString (必需): 要搜索的子字符串。
  • length (可選): 指定要檢查的字符串的長度。默認為整個字符串的長度。
  • 返回值: true 或 false。
let str = "Cats are the best!";  
console.log(str.endsWith("best!")); // true  
// 檢查前 8 個字符 "Cats are" 是否以 "are" 結尾  
console.log(str.endsWith("are", 8)); // true  
replace(searchValue, newValue)
  • 功能: 用某些字符替換另一些字符,或替換一個與正則表達式匹配的子串。
  • 參數: searchValue (必需): 要被替換的字符串或正則表達式 (RegExp)。
  • newValue (必需): 用于替換的字符串或函數。
  • 返回值: 一個部分或全部匹配項被替換的新字符串。
let p = "The quick brown fox jumps over the lazy dog. If the dog barked, was it a quick dog?";  
// 當 searchValue 是字符串時,只替換第一個匹配項  
console.log(p.replace("dog", "monkey"));  
// "The quick brown fox ... lazy monkey. If the dog barked..."  // 使用帶 g (全局)標志的正則表達式,替換所有匹配項  
console.log(p.replace(/dog/g, "cat"));  
// "The quick brown fox ... lazy cat. If the cat barked..."
replaceAll(searchValue, newValue)
  • 功能: 替換所有匹配的子串。
  • 參數: searchValue (必需): 字符串或必須帶 g 標志的正則表達式。
  • newValue (必需): 用于替換的字符串或函數。
  • 返回值: 所有匹配項被替換的新字符串。
let str = "I like cats. My favorite cats are Siamese cats.";  
// 使用字符串直接替換所有 "cats"  
console.log(str.replaceAll("cats", "dogs")); // "I like dogs. My favorite dogs are Siamese dogs."  
toLowerCase() 和 toUpperCase()
  • 功能: 分別將字符串轉換為全小寫或全大寫。
  • 參數: 無。
  • 返回值: 轉換后的新字符串。
let text = "Hello World!";  
console.log(text.toLowerCase()); // "hello world!"  
console.log(text.toUpperCase()); // "HELLO WORLD!"    
trim(), trimStart(), trimEnd()
  • 功能: 移除字符串開頭、結尾或兩端的空白字符 (空格、制表符、換行符等)。
  • 參數: 無。
  • 返回值: 移除空白后的新字符串。
let greeting = "   Hello there!   ";  
console.log(greeting.trim());      // "Hello there!"  
console.log(greeting.trimStart()); // "Hello there!   "  
console.log(greeting.trimEnd());   // "   Hello there!"  
split(separator, limit)
  • 功能: 使用指定的分隔符將一個字符串分割成一個字符串數組。
  • 參數: separator (必需): 用作分割依據的字符串或正則表達式。如果為空字符串 “”,則每個字符都會被分割。
  • limit (可選): 一個整數,限制返回的數組中的元素個數。
  • 返回值: 一個包含分割后子串的數組。
let csv = "2025,August,17,Sunday";  
let parts = csv.split(',');  
console.log(parts); // ["2025", "August", "17", "Sunday"]  
let word = "character";  
console.log(word.split('')); // ["c", "h", "a", "r", "a", "c", "t", "e", "r"]  
padStart(targetLength, padString) 和 padEnd(targetLength, padString)
  • 功能: 在當前字符串的開頭 (padStart) 或結尾 (padEnd) 填充指定的字符串,直到達到目標長度。
  • 參數:targetLength (必需): 最終生成的字符串的期望長度。
  • padString (可選): 用來填充的字符串,默認為空格。
  • 返回值: 填充后的新字符串。
let orderId = "123";  
// 通常用于補全編號,如在開頭補 0  
console.log(orderId.padStart(8, '0')); // "00000123"  let label = "Chapter 1";  
// 在結尾補點,用于對齊  
console.log(label.padEnd(20, '.')); // "Chapter 1..........."  
concat(…strings)
  • 功能: 將一個或多個字符串與原字符串連接合并。
  • 參數 …strings (必需): 一個或多個要連接的字符串。
  • 返回值: 連接后的新字符串。
let str1 = "Hello";  
let str2 = "World";  
console.log(str1.concat(' ', str2, '!')); // "Hello World!"  
// 注意:在現代 JS 中,加號 `+` 或模板字符串 `` `${}` `` 是更常用和更高效的拼接方式。  
// let result = str1 + ' ' + str2 + '!';  
// let result = `${str1} ${str2}!`;  
repeat(count)
  • 功能: 將字符串重復指定的次數。
  • 參數: count (必需): 一個整數,表示重復的次數。
  • 返回值: 包含重復內容的新字符串。
let cheer = "Go! ";  
console.log(cheer.repeat(3)); // "Go! Go! Go! "  let separatorLine = "=".repeat(20);  
console.log(separatorLine); // "===================="

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/93382.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/93382.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/93382.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Kiro Preview 應用評測

Kiro應用評測 Kiro 是一個由亞馬遜推出的 AI 驅動的智能開發環境,從原型到生產全程陪伴您的開發過程。它將"靈感編程"的流暢性與規范的清晰性相結合,幫助您更快地構建更好的軟件。 昨天收到了Kiro的試用郵件,收到郵件后第一時間下載…

Flink2.0學習筆記:Flink服務器搭建與flink作業提交

一,下載flink:Downloads | Apache Flink,解壓后放入IDE工作目錄:我這里以1.17版本為例 可以看到,flink后期的版本中沒有提供window啟動腳本:start-cluster.bat 所以這里要通過windows自帶的wsl 系統啟動它 打開終端依次運行下列命令完成w…

MySQL鎖的分類

MySQL鎖可以按照多個維度進行分類,下面我用最清晰的方式為你梳理所有分類方式:一、按鎖的粒度分類(最常用分類)鎖類型作用范圍特點適用引擎示例場景表級鎖整張表開銷小、加鎖快,并發度低MyISAM, MEMORY數據遷移、全表統…

電腦上搭建HTTP服務器在局域網內其它客戶端無法訪問的解決方案

在電腦上開發一套HTTP服務器的程序在調試時,在本機內訪問正常,但是在本機外訪問就不正常,外部客戶端無法訪問或無法連接到本機的服務器的問題,這可能涉及網絡配置、防火墻、端口轉發或服務綁定等問題,在這里提供了解決…

雙指針和codetop2(最短路問題BFS)

雙指針和codetop21.雙指針1.[復寫0](https://leetcode.cn/problems/duplicate-zeros/)2.動態規劃1.[珠寶的最高價值](https://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof/description/)2.[解碼方法](https://leetcode.cn/problems/decode-ways/)3.[下降路徑最小和](ht…

基于K鄰近算法(KNN)的數據回歸預測模型

一、作品詳細簡介 1.1附件文件夾程序代碼截圖 全部完整源代碼,請在個人首頁置頂文章查看: 學行庫小秘_CSDN博客https://blog.csdn.net/weixin_47760707?spm1000.2115.3001.5343 1.2各文件夾說明 1.2.1 main.m主函數文件 該MATLAB代碼實現了一個基于…

【123頁PPT】化工行業數字化解決方案(附下載方式)

篇幅所限,本文只提供部分資料內容,完整資料請看下面鏈接 https://download.csdn.net/download/2501_92808859/91654005 資料解讀:【123頁PPT】化工行業數字化解決方案 詳細資料請看本解讀文章的最后內容。化工行業作為國民經濟的重要支柱之…

c++--文件頭注釋/doxygen

文件頭注釋 開源項目: /*** file robot_base.cpp* author Mr.Wu* date 2025-05-28* version 1.0.0* brief Robot basic drive to communicate with controller** copyright Copyright (c) 2025 google.** Licensed under the Apache License, Version 2.…

【教程】筆記本安裝FnOS設置合蓋息屏不休眠

重裝FnOS好幾次了,合蓋后屏幕關閉但不休眠的問題每次都要網上找參差不齊的教程,麻煩死了,索性記錄一下方便以后復制粘貼。 使用root登錄 sudo -i修改系統配置文件編輯logind.conf文件: 打開終端,輸入以下命令以編輯log…

深入解析 Monkey OCR:本地化、多語言文本識別的利器與實踐指南

在信息爆炸的時代,從圖片、掃描文檔中高效提取結構化文本的需求日益迫切。OCR(光學字符識別)技術成為解決這一問題的核心工具。盡管市面上有 Abbyy FineReader、Adobe Acrobat 等商業巨頭,以及 Tesseract、PaddleOCR 等開源方案&a…

動態規劃法 - 53. 最大子數組和

什么是動態規劃法? 簡單說,動態規劃(Dynamic Programming,簡稱 DP) 是一種**「把復雜問題拆解成小問題,通過解決小問題來解決大問題」**的方法。 核心思路有兩個: 1.拆分問題:把原問…

STM32CUBEMX配置stm32工程

1.新建工程2.選擇芯片3.配置各種片上外設和時鐘4.創建工程5.根據文件內容進行修改工程注意:最好根據工程規范來做,因為有時我們需要更改配置并重新生成,如果不按規范來會導致部分代碼會被系統清除,在工程中中有很多成對的BEGIN和E…

Day07 緩存商品 購物車

緩存菜品問題說明用戶端小程序展示的菜品數據都是通過查詢數據庫獲得,如果用戶端訪問量比較大,數據庫訪問壓力隨之增大。結果:系統響應慢,用戶體驗差實現思路通過 Redis 來緩存菜品數據,減少數據庫查詢操作。緩存邏輯分…

Jenkins(集群與流水線配置)

Jenkins(集群與流水線配置) Jenkins集群 集群化構建可以提升構建效率,也可以并發在多臺機器上執行構建。 安裝前提:內存至少512MB、Java 17 以上、Maven環境、Git環境 配置集群步驟 配置節點菜單新建節點查看節點配置狀態 新建完節…

深入剖析ROS參數服務器通信機制 ——共享全局數據的“云端倉庫”實現原理

?1. 核心概念:分布式數據共享容器? ?定位?:ROS參數服務器(Parameter Server)是ROS架構中的全局共享存儲系統,相當于機器人的“云端倉庫”。 ?作用?: 存儲多節點共享的靜態配置參數(如機器…

21.AlexNet

雖然LeNet在手寫數字識別上取得了不錯的結果,但是他在對于更大的數據集效果就十分有限。 一方面,對于更大尺寸的圖像效果有限 另一方面,對于更多分類的任務效果有限 自LeNet后的十幾年,計算機視覺領域步入寒冬,神經網絡…

Shell腳本-條件判斷相關參數

一、前言在 Shell 腳本編程中,條件判斷 是實現流程控制的核心機制之一。無論是判斷文件是否存在、字符串是否相等,還是數值大小比較,都離不開條件判斷語句。本文將帶你全面掌握 Shell 腳本中與條件判斷相關的參數和語法,包括&…

何為“低空經濟”?

低空經濟(Low-Altitude Economy)是指以1000米以下空域(部分場景可延伸至3000米)為核心,以無人機(UAV)、電動垂直起降飛行器(eVTOL)、直升機、通航飛機等航空器為載體&…

線性代數 | 直觀理解一些概念

注:本文為 “線性代數 直觀理解概念” 相關合輯。 英文引文,機翻未校。 中文引文,略作重排。 如有內容異常,請看原文。 直觀理解線性代數的一些概念 2015-03-06 Updated: 2015-05-09 本文介紹矩陣的一些相關概念的直觀理解&…

Spring AI 集成阿里云百煉平臺

Spring AI 集成阿里云百煉平臺 創建API key 在阿里云百煉平臺創建API key設置系統變量。阿里云百煉 api key 創建 API 參考 官方API地址:https://bailian.console.aliyun.com (1)在阿里云百煉控制臺,選擇API參考菜單。 API…