欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

在字符串截取方面,新手因?yàn)闆](méi)能注意到偏移量的問(wèn)題,很容易提取到錯(cuò)誤的字符串,因此,特開(kāi)此帖,詳細(xì)解釋 set 截取字符的用法。

我們先來(lái)看一個(gè)例子:

set str=123456789

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

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

原來(lái),set 命令從左到右做字符截取的時(shí)候,是以整個(gè)字符串的第一個(gè)字符為起點(diǎn)來(lái)計(jì)算要截取字符的偏移量的,也就是說(shuō),截取字符的時(shí)候,set 會(huì)計(jì)算提取后字符串的第一個(gè)字符相對(duì)于整個(gè)字符串第一個(gè)字符偏移了多少字符的長(zhǎng)度。請(qǐng)注意,set 是按偏移量而不是字符的絕對(duì)位置來(lái)提取字符的,這一點(diǎn)非常重要。只要牢記這一點(diǎn),大家在截取字符的時(shí)候,將會(huì)不再在這個(gè)問(wèn)題上犯錯(cuò)。

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

我們來(lái)詳細(xì)解讀這條語(yǔ)句模式的含義:

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

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

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

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

看了上面三種需求的代碼,大家可能又會(huì)產(chǎn)生新的疑問(wèn):第一條怎么只有一個(gè)數(shù)字?。康谌龡l最后一個(gè)數(shù)字是負(fù)號(hào),又表示什么意思呢?

原來(lái),在 set var=%str:~偏移量,長(zhǎng)度% 這樣的語(yǔ)句中,如果沒(méi)有逗號(hào)及其之后的長(zhǎng)度,就表示截取偏移量位置上及其之后的所有字符,如果長(zhǎng)度的值為負(fù)數(shù),則表示拋棄最后幾個(gè)字符。

現(xiàn)在,我們可以對(duì)任意位置上的字符做提取工作了(假設(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%

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

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

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

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

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

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

案例3:從右往左截取,截取3個(gè)字符

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

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

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

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

相關(guān)文章

最新評(píng)論