乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      批處理中的字符串處理詳解

       Synix 2009-03-07
      2008年03月25日 14:57
      首先說一下,批處理和高級語言不同,沒有字符串處理函數(shù),比如strcat之類的,但是卻可以利用環(huán)境變量來實現(xiàn)這些函數(shù)的功能。
      本文對照C語言中的字符串處理函數(shù),講解在批處理中的實現(xiàn)方法。

      首先說一下字符串的存儲,在C語言中,采用字符數(shù)組或者字符指針來存儲字符串,而BAT中沒有這些東東,所以要依靠環(huán)境變量來存儲。
      設(shè)置環(huán)境變量的語句為set語句,本文不詳細介紹了,參考set /?語句。

      1、C語中的strcpy函數(shù),將一個字符串復制到另一個字符型指針或字符數(shù)組,覆蓋原來的字符串。

      C語言中的調(diào)用方法:strcpy(目標字符串,源字符串)

      在批處理中的實現(xiàn)方法:

      set 目標字符串=%源字符串%

      示例:
      復制內(nèi)容到剪貼板
      代碼:
      @echo off
      ::關(guān)閉屏幕回顯(可選)
      set str1=This is old string
      ::設(shè)置str1中存儲的字符串,注意沒有雙引號,這點與C語言等不同!
      set str2=This is new string
      ::設(shè)置str2中存儲的字符串
      echo 執(zhí)行字符串拷貝以前:
      echo str1=%str1%
      echo str2=%str2%
      ::先輸出一次原有的字符串
      set str1=%str2%
      ::字符串拷貝
      echo 執(zhí)行字符串拷貝以后:
      echo str1=%str1%
      echo str2=%str2%
      ::輸出執(zhí)行完字符串拷貝后的字符串
      echo 輸出完畢,按任意鍵退出&&pause>nul&&exit
      ::輸出信息,當用戶按任意鍵時,結(jié)束該批處理。
      效果圖:


      2、C語中的strcat函數(shù),將一個字符串連接到另一個字符型指針或字符數(shù)組的末尾。

      C語言中的調(diào)用方法:strcat(目標字符串,源字符串)

      在批處理中的實現(xiàn)方法:

      set 目標字符串=%目標字符串%%源字符串%

      示例:
      復制內(nèi)容到剪貼板
      代碼:
      @echo off
      set str1=This is string1
      set str2=This is string2
      ::設(shè)置str1和str2中存儲的字符串
      echo 連接字符串以前:
      echo str1=%str1%
      echo str2=%str2%
      ::先輸出一次原有的字符串
      set str1=%str1%%str2%
      ::字符串連接
      echo 連接字符串以后:
      echo str1=%str1%
      echo str2=%str2%
      ::輸出執(zhí)行完字符串連接后的兩個字符串
      echo 輸出完畢,按任意鍵退出&&pause>nul&&exit
      效果圖:


      3、字符串截取,C中沒有這種函數(shù),不過可以通過語句實現(xiàn),不再介紹,直接說批處理的。

      set 目標字符串=%源字符串:~起始值,截取長度%

      注意,起始值從0開始!
      截取長度是可選的,如果省略逗號和截取長度,將會從起始值一直截取到字符串的結(jié)尾。

      示例:
      復制內(nèi)容到剪貼板
      代碼:
      @echo off
      set str1=This is string1
      ::設(shè)置str1中存儲的字符串
      set str2=%str1:~8,6%
      set str3=%str1:~0,4%
      set str4=%str1:~5%
      ::字符串截取
      echo 原字符串:
      echo str1=%str1%
      echo 截取得到的字符串:
      echo str2=%str2%
      echo str3=%str3%
      echo str4=%str4%
      ::輸出執(zhí)行結(jié)果
      echo 輸出完畢,按任意鍵退出&&pause>nul&&exit
      效果圖:


      4、C語中的strlen函數(shù),取得字符串的長度。

      C語言中的調(diào)用方法:strlen(字符串)

      在批處理中的實現(xiàn)方法是利用goto和標簽,形成循環(huán)結(jié)構(gòu),不斷將字符串截短1字符,并用變量記錄截短的次數(shù),直到字符串變成空串。

      示例:
      復制內(nèi)容到剪貼板
      代碼:
      @echo off
      set str1=This is a test string
      set str2=Hello World
      ::設(shè)置兩個字符串
      set str=%str1%
      ::將str1復制到str
      :next1
      ::標簽,用于goto跳轉(zhuǎn)
      ::注意與注釋語句的區(qū)別,注釋用兩個冒號開頭,標簽則為一個冒號
      if not "%str%"=="" (
      ::判斷str是不是空串,如果不是則執(zhí)行下邊的語句
      set /a num+=1
      ::算術(shù)運算,使num的值自增1,相當于num++或者++num語句
      set "str=%str:~1%"
      ::截取字符串,賦給自身
      goto next1
      ::跳轉(zhuǎn)到next1標簽
      ::這里利用goto和標簽,構(gòu)成循環(huán)結(jié)構(gòu)
      )
      ::當以上循環(huán)結(jié)構(gòu)執(zhí)行完畢時,會執(zhí)行下邊的語句
      echo str1=%str1%
      echo str1的長度為:%num%
      ::輸出結(jié)果
      set num=0
      ::將記和用的環(huán)境變量num置0,以便開始下一次運算。
      set str=%str2%
      ::將str2復制到str
      :next2
      ::定義一個新的標簽
      ::注意不能與已有的標簽同名,否則會出錯!
      if not "%str%"=="" (
      set /a num+=1
      set "str=%str:~1%"
      goto next2
      )
      ::和上一個循環(huán)相似,不再介紹
      echo str2=%str2%
      echo str2的長度為:%num%
      ::輸出結(jié)果
      echo 輸出完畢,按任意鍵退出&&pause>nul&&exit
      效果圖:


      5、C語中的strchr函數(shù),在一個字符串中查找一個字符的首次出現(xiàn)位置,找到時返回所在位置,找不到時返回0值。

      批處理中的思路:不斷截短字符串,并取截短后字符串中的首字符,和要求的字符比較,如果相同就利用goto語句跳出循環(huán),輸出結(jié)果,如果沒有相同的字符,執(zhí)行到最后就輸出0值。

      示例:
      復制內(nèi)容到剪貼板
      代碼:
      @echo off
      Setlocal ENABLEDELAYEDEXPANSION
      ::啟用命令擴展,參加setlocal /?命令
      set str1=This is a test string
      set ch1=t
      ::注意,這里是區(qū)分大小寫的!
      set str=%str1%
      ::復制字符串,用來截短,而不影響源字符串
      :next
      if not "%str%"=="" (
      set /a num+=1
      if "!str:~0,1!"=="%ch1%" goto last
      ::比較首字符是否為要求的字符,如果是則跳出循環(huán)
      set "str=%str:~1%"
      goto next
      )
      set /a num=0
      ::沒有找到字符時,將num置零
      :last
      echo 字符'%ch1%'在字符串"%str1%"中的首次出現(xiàn)位置為%num%
      echo 輸出完畢,按任意鍵退出&&pause>nul&&exit
      效果圖:
      引用:
      最后出幾道題,看看大家學習的怎么樣!
      (1)如何實現(xiàn)C語言中strstr函數(shù)的功能?
      提示:strstr函數(shù)的功能是在字符串1中查找字符串2,找到時返回串2首次出現(xiàn)的位置,否則返回0值。與strchr區(qū)別就是,第二個參數(shù)是字符串,而不是字符了。

      (2)如何用批處理構(gòu)建while循環(huán)?
      提示:while循環(huán)一般格式為:
      while(表達式)
      {
      循環(huán)體
      [break|continue;]
      循環(huán)體
      }
      其中,循環(huán)體為0條或多條語句,break用于跳出循環(huán),continue用于直接判斷表達式并決定是否進入下一次循環(huán)。
      一般執(zhí)行順序:首先判斷表達式,如果成立則進入循環(huán),循環(huán)體執(zhí)行完畢后再次判斷表達式的值,決定是否再次循環(huán)。

      (3)如何用批處理構(gòu)建do-while循環(huán)?
      提示:do-while循環(huán)一般格式為:
      do
      {
      循環(huán)體
      [break|continue;]
      循環(huán)體
      }while(表達式);
      各個語句的解釋參照while循環(huán)。
      一般執(zhí)行順序:首先進入循環(huán),循環(huán)體執(zhí)行完畢后判斷表達式的值,表達式成立則再次進入循環(huán)。
      By 小宋

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多