1. 程式人生 > >string裡的IndexOf、LastIndexOf、Substring的詳解(意義和用法)

string裡的IndexOf、LastIndexOf、Substring的詳解(意義和用法)

今天遇到擷取字串的問題,在網上查了IndexOf、LastIndexOf、Substring這三種擷取字串的使用總結如下:

  String.IndexOf

  String.IndexOf 方法 (Char, Int32, Int32)
報告指定字元在此例項中的第一個匹配項的索引。搜尋從指定字元位置開始,並檢查指定數量的字元位置。
String.IndexOf(value, startIndex, count)

引數
value:要查詢的 Unicode 字元。 
startIndex:搜尋起始位置。 
count:要檢查的字元位置數。
返回值(Int32):
如果找到該字元,則為 value 的索引位置;否則如果未找到,則為 -1。

String.LastIndexOf

String.LastIndexOf 方法
報告指定的 Unicode 字元或 String 在此例項中的最後一個匹配項的索引位置。

名稱 說明
String.LastIndexOf (Char) 報告指定 Unicode 字元在此例項中的最後一個匹配項的索引位置。
String.LastIndexOf (String) 報告指定的 String 在此例項內的最後一個匹配項的索引位置。
String.LastIndexOf (Char, Int32) 報告指定 Unicode 字元在此例項中的最後一個匹配項的索引位置。該搜尋從指定字元位置開始。
String.LastIndexOf (String, Int32) 報告指定的 String 在此例項內的最後一個匹配項的索引位置。該搜尋從指定字元位置開始。
String.LastIndexOf (String, StringComparison) 報告指定字串在當前 String 物件中最後一個匹配項的索引。一個引數指定要用於指定字串的搜尋型別。
String.LastIndexOf (Char, Int32, Int32) 報告指定的 Unicode 字元在此例項內的子字串中的最後一個匹配項的索引位置。搜尋從指定字元位置開始,並檢查指定數量的字元位置。
String.LastIndexOf (String, Int32, Int32)
報告指定的 String 在此例項內的最後一個匹配項的索引位置。搜尋從指定字元位置開始,並檢查指定數量的字元位置。
String.LastIndexOf (String, Int32, StringComparison) 報告指定字串在當前 String 物件中最後一個匹配項的索引。引數指定當前字串中的起始搜尋位置,以及要用於指定字串的搜尋型別。
String.LastIndexOf (String, Int32, Int32, StringComparison) 報告指定的 String 物件在此例項內的最後一個匹配項的索引位置。引數指定當前字串中的起始搜尋位置、要搜尋的當前字串中的字元數量,以及要用於指定字串的搜尋型別。


示例:
string str = "深圳市盈基實業有限公司國際通鄧事文*深圳市盈基實業有限公司國際通鄧事文";
Label1.Text = str.LastIndexOf("鄧文").ToString();//返回-1
Label1.Text = str.LastIndexOf("鄧").ToString();//返回32

Label1.Text = str.LastIndexOf("鄧",8).ToString();//返回-1
Label1.Text = str.LastIndexOf("鄧",20).ToString();//返回14
Label1.Text = str.LastIndexOf("鄧",33).ToString();//返回32
說明:在指定的範圍內查詢字元,這個範圍是上面的輸入的引數,理解為,從索引0開始到指定的數值位置範圍內查詢最後一個匹配的的字串的位置。示例中,0-8中沒有“鄧”字,所以返回-1,0-20範圍中,有一個“鄧”字在索引14位置上,0-33範圍中有兩個“鄧”字,因為LastIndexOf是返回最後一個匹配項索引位置,所以返32,而不是14。

String.Substring

String.Substring 方法
從此例項檢索子字串。 

名稱 說明
String.Substring (Int32) 從此例項檢索子字串。子字串從指定的字元位置開始。
String.Substring (Int32, Int32) 從此例項檢索子字串。子字串從指定的字元位置開始且具有指定的長度。



示例:
string str = "深圳市盈基實業有限公司國際通鄧事文*深圳市盈基實業有限公司國際通鄧事文";
Label1.Text = str.Substring(11);//返回 “國際通鄧事文*深圳市盈基實業有限公司國際通鄧事文”
Label1.Text = str.Substring(11,7);//返回 “國際通鄧事文*”

Label1.Text = str.Substring(str.Length-3,3); // 返回鄧事文,即截倒數3位字元

總結:

IndexOf、LastIndexOf都是返回一個位置,是個整數值;找不到都返回-1;
IndexOf是從左向右查,LastIndexOf是從右向左查,不管是IndexOf還是LastIndexOf,索引序列都是從左到右的(起始值是0)
Substring是字串擷取,返回值是一個擷取後的字串。

相關推薦

stringIndexOfLastIndexOfSubstring意義用法

今天遇到擷取字串的問題,在網上查了IndexOf、LastIndexOf、Substring這三種擷取字串的使用總結如下:   String.IndexOf   String.IndexOf 方法 (Char, Int32, Int32) 報告指定字元在此例項中的第

Elasticsearch增查操作深入Elasticsearch教程02|MVP講堂

作者:阿里雲MVP 銘毅 往期內容:死磕 Elasticsearch 方法論:普通程式設計師高效精進的 10 大狠招!Elasticsearch學習,請先看這一篇!(Elasticsearch教程01) 引言:對於剛接觸ES的童鞋,經常搞不明白ES的各個概念的含義。尤其對“索引”二字更是與關係型資料庫混淆

梳理Python 框架之中介軟體用途機制

什麼是中介軟體? 中介軟體是一個Python程式設計師用來處理Django的請求和響應的框架級別的鉤子,它是一個輕量,低級別的外掛系統,用於全域性範圍內改變Django的輸入,輸出。每個中介軟體元件都負責做一些特定的功能。 說的直白一點是中介軟體就是幫我們程式設計

SpringIOCAOP

Spring框架—控制反轉(IOC) 1 Spring框架概述 1.1 什麼是Spring Spring是一個開源框架,Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson 在其著作Expert One-On-One J2EE

動態陣列vectorJavaC++

1.概念描述: vector名為動態陣列 有些時候想開一個數組,但是卻不知道應該開多大長度的數組合適,因為我們需要用到的陣列很可能會根據情況變動。這時候我們就需要用到動態陣列。所謂動態陣列,也就是不定

RabbitMQ 配置檔案生產者消費者

一、rabbitmq 配置檔案 在web 專案開發過程中,一般分為生產者配置檔案和消費者配置檔案。廢話少說,馬上教您整個流程的配置! 1、準備工作:安裝好rabbitmq,並在專案中增加配置檔案   rabbit.properties 內容如下: rmq.ip=192.1

DP動態規劃--例題Decode Ways Longest Palindromic Substring

1題目: A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' -> 1 'B' -> 2 ... 'Z' ->

Js新增元素刪除元素誤區【push()add();splice()remove()】

新增元素之誤區一,push()和add()使用及區別 push()方法是給陣列尾巴新增一個或多個元素,返回的是新增陣列後該陣列長度。 測試程式碼: var arr = [1,2,3,4]; var arrlength = arr.push(5); console.log("arr

C語言中二維陣列名與陣列地址首行地址首行首元素地址關係與區別初學者必須掌握

C語言作為很多大學理工科都會學習的語言,作為一種程式設計入門語言。但是相對於其他高階程式語言來說相對是比較難,尤其是指針,不知道有多少莘莘學子都是因為它,從C語言入門到放棄。想當年,筆者在大一學習C語言

js小數相加相乘失去精度問題解析最優方案

var CMX = CMX || {}; /** ** 加 **/ CMX.add = function (arg1, arg2) { var r1, r2, m, c; try { r1 = arg1.toString().split(".")[1].length; } catc

大資料入門基礎系列之Hadoop1.XHadoop2.XHadoop3.X的多維度區別博主推薦

  不多說,直接上乾貨! 在前面的博文裡,我已經介紹了   見下面我寫的微信公眾號博文 歡迎大家,加入我的微信公眾號:大資料躺過的坑     免費給分享 同時,大家可以關注我的個人部

SQL Server事務隔離級別二十九

前言 事務一直以來是我最薄弱的環節,也是我打算重新學習SQL Server的出發點,關於SQL Server中事務將分為幾節來進行闡述,Always to review the basics。  事務簡介 事務是一個工作單元,可能包含查詢和修改資料以及修改資料定義等多個活動

JS中offsetTopclientTopscrollTopoffsetTop各位置屬性含示例圖

這裡是javascript中製作滾動程式碼的常用屬性 頁可見區域寬: document.body.clientWidth; 網頁可見區域高: document.body.clientHeight; window.innerHeight; 網頁可見區域寬: docume

Mac下Brackets安裝EmmetBeauty外掛 步驟配圖

剛寫完上一篇Sublime安裝外掛,想到Brackets也需要安裝Emmet外掛,於是探索下發現安裝步驟非常簡潔,記錄下 Sublime安裝外掛連結: http://blog.csdn.net/lovechris00/article/details/51678930 下面

Java簡單類變數概念分類宣告命名初始化

1初識JAVA簡單類 (1)建立第一個Java程式的具體步驟: 第一步:建立一個工程,在Package Explorer空白區域中右擊New->點選Java Project->填寫Project name(例如:javastudy),然後填寫Finish

linux的jps命令檢視java程序

jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一個顯示當前所有java程序pid的命令,簡單實用,非常適合在linux/unix平臺上簡單察看當前java程序的一些簡單情況 jps -q

網路程式設計常用的通訊協議Socket套接字程式設計SocketServerSocket埠號

網路程式設計:     java語言中,提供了一套統一的程式設計介面。很多細節都已經底層化。            所在,可以進行無痛的網路通訊程式設計。            提供的是Socket套接字技術。  --常用的通訊協議:    (1)TCP/IP:在通訊之前,需

Windows下VTK6.0.0安裝CMake使用說明

操作 工具 generate 其中 con htm 目錄下的文件 ima 新建 操作系統:Windows7,用到工具:Visual studio、CMake。 1.準備工作 VTK下載: 下載最新VTK穩定版(6.0.0,截至2013年7月)http://www.vtk

HTTP協議真的很經典

cnp 運用 web應用 media 服務器端 所有 長度 request bad 轉載:http://e7kan.com/?p=264& 引言 HTTP是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分布式超媒體信息系統。它於1990年提出,經過幾

PCA 主成分分析 寫給初學者 結合matlab轉載

整數 變量 行為 保持 sum osc 入參 函數 data 一、簡介 PCA(Principal Components Analysis)即主成分分析,是圖像處理中經常用到的降維方法,大家知道,我們在處理有關數字圖像處理方面的問題時,比如經常用的圖像的查詢