日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

批处理命令set截取字符详解

發布時間:2024/9/21 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 批处理命令set截取字符详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在批處理中,set的功能有點繁雜:設置變量、顯示環境變量的名及值、做算術運算、等待用戶的輸入、字符串 截取 、替換字符串,是我們常用的命令之一。

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

  我們先來看一個例子:

  set str=123456789

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

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

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

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

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

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

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

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

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

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

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

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

  最后,我們來總結一下字符 截取 的規律:

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

總結

以上是生活随笔為你收集整理的批处理命令set截取字符详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。