JavaScript中String的slice(),substr(),substring()三者區別

JavaScript中String的slice(),substr(),substring()三者區別

共同之處

從給定的字符串中截取片段,并返回全新的這片段的字符串對象,且不會改動原字符串。

具體不同之處

slice()

str.slice(beginIndex[, endIndex])
參數描述
beginIndex從該索引(以 0 為基數)處開始提取原字符串中的字符(包含)。如果值為負數,會被當做 strLength + beginIndex 看待,這里的strLength 是字符串的長度(例如, 如果 beginIndex 是 -3 則看作是:strLength - 3)
endIndex可選。在該索引(以 0 為基數)處(該索引下有字符,不包含)結束提取字符串。如果省略該參數,slice() 會一直提取到字符串末尾。如果該參數為負數,則被看作是 strLength + endIndex,這里的 strLength 就是字符串的長度(例如,如果 endIndex 是 -3,則是, strLength - 3)。

描述

slice() 從一個字符串中提取字符串并返回新字符串。在一個字符串中的改變不會影響另一個字符串。也就是說,slice 不會修改原字符串(只會返回一個包含了原字符串中部分字符的新字符串)。

slice() 提取的新字符串包括beginIndex但不包括 endIndex。下面有兩個例子。

例 1:str.slice(1, 4) 提取第二個字符到第四個字符(被提取字符的索引值(index)依次為 1、2,和 3)。

例 2:str.slice(2, -1) 提取第三個字符到倒數第一個字符。


例子

var str1 = 'The morning is upon us.', // str1 的長度 length 是 23。str2 = str1.slice(1, 8),str3 = str1.slice(4, -2),str4 = str1.slice(12),str5 = str1.slice(30);
console.log(str2); // 輸出:he morn
console.log(str3); // 輸出:morning is upon u
console.log(str4); // 輸出:is upon us.
console.log(str5); // 輸出:""//傳入了負值作為索引
var str = 'The morning is upon us.';
str.slice(-3);     // 返回 'us.'
str.slice(-3, -1); // 返回 'us'
str.slice(0, -1);  // 返回 'The morning is upon us'

substr()

str.substr(start[, length])

警告: 盡管 String.prototype.substr(…) 沒有嚴格被廢棄 (as in “removed from the Web standards”), 但它被認作是遺留的函數并且可以的話應該避免使用。它并非JavaScript核心語言的一部分,未來將可能會被移除掉。如果可以的話,使用 substring() 替代它.

參數描述
start開始提取字符的位置。如果為負值,則被看作 strLength + start,其中 strLength 為字符串的長度(例如,如果 start 為 -3,則被看作 strLength + (-3))。
length可選。提取的字符數。

描述

start 是一個字符的索引。首字符的索引為 0,最后一個字符的索引為 字符串的長度減去1。substr 從 start 位置開始提取字符,提取 length 個字符(或直到字符串的末尾)。

  1. 如果 start 為正值,且大于或等于字符串的長度,則 substr 返回一個空字符串。
  2. 如果 start 為負值,則 substr 把它作為從字符串末尾開始的一個字符索引。如果 start 為負值且 abs(start) 大于字符串的長度,則 substr 使用 0 作為開始提取的索引。
  3. 如果 length 為 0 或負值,則 substr 返回一個空字符串。如果忽略 length,則 substr 提取字符,直到字符串末尾。

例子

var str = "abcdefghij";console.log("(1,2): "    + str.substr(1,2));   // (1,2): bc
console.log("(-3,2): "   + str.substr(-3,2));  // (-3,2): hi
console.log("(-3): "     + str.substr(-3));    // (-3): hij
console.log("(1): "      + str.substr(1));     // (1): bcdefghij
console.log("(-20, 2): " + str.substr(-20,2)); // (-20, 2): ab
console.log("(20, 2): "  + str.substr(20,2));  // (20, 2):

substring()

str.substring(indexStart[, indexEnd])
參數描述
indexStart需要截取的第一個字符的索引,該索引位置的字符作為返回的字符串的首字母。
indexEnd可選。一個 0 到字符串長度之間的整數,以該數字為索引的字符不包含在截取的字符串內。

描述
substring 提取從 indexStart 到 indexEnd(不包括)之間的字符。特別地:

  • 如果 indexStart 等于 indexEnd,substring 返回一個空字符串。
  • 如果省略 indexEnd,substring 提取字符一直到字符串末尾。
  • 如果任一參數小于 0 或為 NaN,則被當作 0。
  • 如果任一參數大于 stringName.length,則被當作 stringName.length。
  • 如果 indexStart 大于 indexEnd,則 substring 的執行效果就像兩個參數調換了一樣。見下面的例子。

例子

var anyString = "Mozilla";// 輸出 "Moz"
console.log(anyString.substring(0,3));
console.log(anyString.substring(3,0));
console.log(anyString.substring(3,-3));
console.log(anyString.substring(3,NaN));
console.log(anyString.substring(-2,3));
console.log(anyString.substring(NaN,3));// 輸出 "lla"
console.log(anyString.substring(4,7));
console.log(anyString.substring(7,4));// 輸出 ""
console.log(anyString.substring(4,4));// 輸出 "Mozill"
console.log(anyString.substring(0,6));// 輸出 "Mozilla"
console.log(anyString.substring(0,7));
console.log(anyString.substring(0,10));//下面一個例子運用了 String.length 屬性去獲取指定字符串的倒數元素。
//顯然這個辦法更容易記住,因為你不再像上面那個例子那樣去記住起始位置和最終位置。// Displays 'illa' the last 4 characters
var anyString = 'Mozilla';
var anyString4 = anyString.substring(anyString.length - 4);
console.log(anyString4);// Displays 'zilla' the last 5 characters
var anyString = 'Mozilla';
var anyString5 = anyString.substring(anyString.length - 5);
console.log(anyString5);

參考資料

  1. String.prototype.slice() - JavaScript | MDN
  2. String.prototype.substr() - JavaScript | MDN
  3. String.prototype.substring() - JavaScript | MDN
  4. JavaScript中substr(),substring(),slice()區別

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

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

相關文章

pythontuple數據類型_數據類型-元組Tuple

Python Tuple用于存儲不可變python對象的序列。元組類似于列表,因為可以改變列表中存儲的項的值,而元組是不可變的,并且不能改變存儲在元組中的項的值。元組可以寫成用小括號括起來的逗號分隔值的集合。元組可以定義如下。T1 (101, "Ay…

《劍指Offer》24:反轉鏈表

題目 定義一個函數,輸入一個鏈表的頭節點,反轉鏈表并輸出反轉后鏈表的頭節點。鏈表節點定義如下: public static class ListNode{public int val;public ListNode next;public ListNode(int val) {this.val val;} }分析 方法一&#xff1…

python兩個for循環為什么第二個循環里值不變_兩個for循環,第二個只在第一個迭代python上執行...

我是一個pythonnoob,我試圖比較兩個文件中的行之間的值,如果行在第二個文件中,則輸出“line name”,然后輸出1;如果第二個文件中缺少該行,則輸出0。第一次迭代返回1,因為該行在第二個文件中&…

python如何問問題_學會正確的提問

可能很多讀者看到這個標題會感覺很可笑,提問誰不會啊,互聯網時代,提問還不是一句話的事情?個人、技術群、論壇里都可以提問啊,「你好」「在嗎?」「有人用過 xx 工具嗎?」。首先,提問…

如何保證接口的冪等性

如何保證接口的冪等性 什么是冪等性 冪等性是系統服務對外一種承諾,承諾只要調用接口成功,外部多次調用對系統的影響是一致的。聲明為冪等的服務會認為外部調用失敗是常態,并且失敗之后必然會有重試。 通俗地說,接口冪等性就是…

mysql二進制方式_MySQL數據庫之MySql二進制連接方式詳解

本文主要向大家介紹了MySQL數據庫之MySql二進制連接方式詳解 ,通過具體的內容向大家展現,希望對大家學習MySQL數據庫有所幫助。使用mysql二進制方式連接您可以使用MySQL二進制方式進入到mysql命令提示符下來連接MySQL數據庫。實例以下是從命令行中連接my…

xposed模塊編寫教程_太極xposed模塊使用教程

今天給大家分享一下太極xposed模塊使用教程。很多小伙伴說下載不到Xposed模塊,這個網上其實很多,但是第三方的下載站就算了吧。我也是一個深受其害的網癮少年,只要是下載站的軟件,一不留心一次性電腦可能會多安裝好多個軟件&#…

如何使用mysql添加更新_Mysql 存在既更新,不存在就添加(sql語句)

討人喜歡的 MySQL replace into 用法(insert into 的增強版)在向表中插入數據的時候,經常遇到這樣的情況:1. 首先判斷數據是否存在; 2. 如果不存在,則插入;3.如果存在,則更新。在 SQL Server 中可以這樣處理…

linux + nginx + mysql + php 百度網盤_5.LNMP(Linux + Nginx + MySQL + PHP)環境安裝

1.安裝Nginx:yum install yum-priorities -ywget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpmrpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpmyum -y install nginxsystemctl start nginx.servicesystemctl stop ngin…

LeetCode - Easy - 28. Implement strStr()

Topic Two Pointers, String Description https://leetcode.com/problems/implement-strstr/ Implement strStr(). Return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. needle /?ni?dl/ n.針 haystack /?he?…

mysql item_MySQL源代碼:關于MySQL的Item對象

前篇介紹了MySQL如何從SQL語句轉換成一個內部對象。本文是前篇的延續,將更加詳細的介紹WHERE語句對應的Item對象。1. Item對象MySQL InternalMySQL Internals Manual較為詳細的介紹了Item對象。Item對象經常被稱作"thingamabob"(A thingamabob is a noun …

python的發展趨勢圖_用Python繪制趨勢圖

我在數據幀中有以下數據:-------------------------------------------------------| Physician Profile Id | Program Year | Value Of Interest |-------------------------------------------------------| 1004777 | 2013 | 83434288.00 || 1004777 | 2014 | 89…

mysql的實現類注解_Mybaits (XML方式:無需在寫Dao的實現類 注解方式:Dao的實現類與Mapper都可以不寫 重點理解)...

Maven的pom.xml 坐標配置4.0.0Mybatis_mavenday01_mbatis1.0-SNAPSHOTjarorg.mybatismybatis3.4.5mysqlmysql-connector-java5.1.45junitjunit4.12testorg.apache.maven.pluginsmaven-compiler-plugin2.3.21.81.8UTF-8mybatis的配置文件/p>PUBLIC "-//mybatis.org//DTD…

SQL字符串中單引號與換行符的轉義

問題 打算將文本文件內容添加至MySQL數據庫,則需要對文本中的單引號和換行符進行轉義,否則無法編寫合法的SQL。 解法 迭代文本文件的行時,將原行尾的換行符剔除掉,并拼接\\n;迭代文本文件的行時,將原行中的替換成。…

mysql 建庫字段_MySQL 的字段類型以及建庫策略

一、數字類型所謂的“數字類”,就是指 DECIMAL 和NUMERIC,它們是同一種類型。它嚴格的說不是一種數字類型,因為他們實際上是將數字以字符串形式保存的;他的值的每一位(包括小數點)占一個字節的存儲空間,因此這種類型耗…

mysql中建立text_mysql中text

一,char類型char列的長度固定為創建表時聲明的長度。長度可以為從0到255的任何值。當保存char值時,在它們的右邊填充空格以達到指定的長度。當檢索到char值時,尾部的空格被刪除掉。在存儲或檢索過程中不進行大小寫轉換。二,varcha…

前后分離接口規范

前后分離接口規范 隨著互聯網的高速發展,前端頁面的展示、交互體驗越來越靈活、炫麗,響應體驗也要求越來越高,后端服務的高并發、高可用、高性能、高擴展等特性的要求也愈加苛刻,從而導致前后端研發各自專注于自己擅長的領域深耕…

mysql proxy 悲觀鎖_mysql悲觀鎖總結和實踐

使用場景舉例:以MySQL InnoDB為例商品t_goods表中有一個字段status,status為1代表商品未被下單,status為2代表商品已經被下單,那么我們對某個商品下單時必須確保該商品status為1。假設商品的id為1。一、如果不采用鎖,那…

MySQL吉連_Learn Jdbc : Java, Jdbc, Odbc

Learn Jdbc : Java, Jdbc, Odbc 介紹Learn Jdbc : Java, Jdbc, OdbcLearn JDBC we precisely name what we are going to help you for Learning.As you are Beginner we keep in mind the same thing,we think like you and try to Build Apps Like Java Deep Learning,Java B…

python虛擬環境打包deb_可以為python腳本創建deb包嗎?

下面是python腳本源包的一個基本示例。雖然大多數打包教程都有點復雜,但如果遇到問題,它們確實可以幫助您。也就是說,我首先通過簡單地查看Debian包來學習Debian打包的基礎知識。獲取相似的源代碼并通過示例學習。在以下是您的基本源程序包布…