亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

批處理字符串截取的實現(xiàn)

 更新時間:2023年06月02日 11:12:10   作者:亦良Cool  
本文主要介紹了批處理字符串截取的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

在批處理中,set的功能有點繁雜:設(shè)置變量、顯示環(huán)境變量的名及值、做算術(shù)運算、等待用戶的輸入、字符串截取、替換字符串,是我們常用的命令之一。

在字符串截取方面,新手因為沒能注意到偏移量的問題,很容易提取到錯誤的字符串,因此,特開此帖,詳細解釋 set 截取字符的用法。

我們先來看一個例子:

set str=123456789

現(xiàn)在,我需要提取變量 str 中的第一個字符,那么,該怎么寫命令呢?

set var=%str:~1,1%?我想,這很可能是很多粗懂set用法的新手們的第一反應(yīng),實際上,這條語句提取到的是字符"2",并不是我們想要的"1",也就是說,set var=%str:~1,1% 提取到的是字符串第二位上的字符,而不是第一位上的,這是什么原因呢?

原來,set 命令從左到右做字符截取的時候,是以整個字符串的第一個字符為起點來計算要截取字符的偏移量的,也就是說,截取字符的時候,set 會計算提取后字符串的第一個字符相對于整個字符串第一個字符偏移了多少字符的長度。請注意,set 是按偏移量而不是字符的絕對位置來提取字符的,這一點非常重要。只要牢記這一點,大家在截取字符的時候,將會不再在這個問題上犯錯。

現(xiàn)在,我們可以把截取字符的命令用一條語句模式來表示,那就是:set var=%str:~偏移量,長度%。

我們來詳細解讀這條語句模式的含義:

首先,我們需要把要操作的字符串賦予一個變量,在這條語句中,是把字符串賦予了變量 str ;然后,我們需要確定一下我們想提取的字符串是哪一部分,比如說要提取字符串第2個字符及其之后的3個字符,或是提取字符串第5個字符及其之后的4個字符……,最后,計算偏移量及長度,比如要提取字符串第2個字符及其之后的3個字符,那么,也就是提取相對于第一個字符偏移量為1、提取后的字符串長度為4的字符串,寫成語句就是:set var=%str:~1,4%。

到目前為止,我們只談到了很簡單的截取操作,如果碰到比較復(fù)雜的提取需求,比如:提取第2個字符及其之后的所有字符、提取最后的3個字符、提取倒數(shù)第2個及其之前的3個字符、提取除了最后4個字符的字符串……那又該怎么辦呢?別著急,set 命令在設(shè)計的時候就已經(jīng)充分考慮到我們的復(fù)雜需求,只要對剛才我們提到的字符截取語句稍做改動,就可以很輕松地完成任務(wù)。

我們知道,數(shù)字的正負可以用±符號來表示,同樣的,方向的正反也可以用±來標注。在 set 做字符截取的時候,引入了±符號來表示字符截取的方向:從左到右截取為+,從右到左截取為-,所以,set var=%str:~1,4% 也可以寫成 set var=%str:~+1,+4% ,只是在從右到左截取的時候,情況發(fā)生了一點變化,那就是:偏移量的起點以整個字符串最后一個字符的后一位來計算?,F(xiàn)在,我們可以來回答上一段中提出的一些問題:

  • 提取最后的3個字符:set var=%str:~-3%
  • 提取倒數(shù)第2個及其之前的3個字符:set var=%str:~-5,4%
  • 提取除了最后4個字符的字符串:set var=%str:~0,-4%

看了上面三種需求的代碼,大家可能又會產(chǎn)生新的疑問:第一條怎么只有一個數(shù)字???第三條最后一個數(shù)字是負號,又表示什么意思呢?

原來,在 set var=%str:~偏移量,長度% 這樣的語句中,如果沒有逗號及其之后的長度,就表示截取偏移量位置上及其之后的所有字符,如果長度的值為負數(shù),則表示拋棄最后幾個字符。

現(xiàn)在,我們可以對任意位置上的字符做提取工作了(假設(shè) set str=123456789):

① 提取1: set var=%str:~0,1% 或 set var=%str:~0,-8% 或 set var=%str:~-9,1%
② 提取2: set var=%str:~1,1% 或 set var=%str:~1,-7% 或 set var=%str:~-8,1%
③ 提取9: set var=%str:~8,1% 或 set var=%str:~8% 或 set var=%str:~-1,1% 或 set var=%str:~-1%
④ 提取123:set var=%str:~0,3% 或 set var=%str:~0,-6% 或 set var=%str:~-9,3%
⑤ 提取234:set var=%str:~1,3% 或 set var=%str:~1,-5% 或 set var=%str:~-8,3%
⑥ 提取789:set var=%str:~6,3% 或 set var=%str:~6% 或 set var=%str:~-3,3% 或 set var=%str:~-3%

最后,我們來總結(jié)一下字符截取的規(guī)律:

1、截取字符串可以用 set var=%str:~數(shù)值1,數(shù)值2% 這樣的語句來實現(xiàn);
2、字符的截取是以偏移量來計算的,而不是以字符的絕對位置來計算;
3、當數(shù)值1為正數(shù)時,表示從左到右截??;當數(shù)值1為負數(shù)時,表示從右到左截??;
4、當數(shù)值2為正數(shù)時,表示要截取后字符串的長度;當為負數(shù)時,表示要拋棄的最后幾個字符長度;
5、當數(shù)值2及其之前的逗號不存在時,表示截取的是第(數(shù)值1+1)個字符及其之后的所有字符;

案例1:從左往右截取,舍棄前4個字符

set var=123456789
echo %var:~4%
pause
-----------------------------
運行結(jié)果:
56789

案例2:從左往右截取,只要前3個字符

set var=123456789
echo %var:~0,3%
pause
-----------------------------
運行結(jié)果:
123

案例3:從右往左截取,截取3個字符

set var=123456789
echo %var:~0,-3%
pause
-----------------------------
運行結(jié)果:
123456

案例4:從左往右舍棄第1位,從右往左舍棄3位

set var=123456789
echo %var:~1,-3%
pause
-----------------------------
運行結(jié)果:
123456
  • ~ 波浪號后面的數(shù)字:為正數(shù)表示舍棄變量的前位;
  • , 逗號后面的數(shù)字為正數(shù)表示取變量的舍棄以后的前幾位;
  • , 逗號后面為負數(shù)表示舍棄變量的后幾位

到此這篇關(guān)于批處理字符串截取的實現(xiàn)的文章就介紹到這了,更多相關(guān)批處理字符串截取內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論