DOS截取字符串的方法

为了说明截取变量中字符串的问题曾经举过如下这个例子:

代码如下:

@echo off
set str=123456789
echo 第一个字符为:%str:~0,1%
echo 头两个字符为:%str:~0,2%
echo 头5个字符为:%str:~0,5%
echo 去掉最后一个字符后的字符串为:%str:~0,-1%
echo 去掉最后3个字符后的字符串为:%str:~0,-3%
echo 第4个字符为:%str:~3,1%
echo 第4个及其之后的3个字符为:%str:~3,4%
echo 最后一个字符为:%str:~-1%
echo 最后一个字符为:%str:~-1,1%
echo 最后一个字符为:%str:~-1,2%
echo 倒数第4个字符为:%str:~-4,1%
echo 倒数第4个及其之后的字符为:%str:~-4%
echo 倒数第4个及其之后的1个字符为:%str:~-4,2%
echo 倒数第4个及其之后的2个字符为:%str:~-4,3%
pause

为了说明这个问题,我在这里把批处理取字符,做下进一步的解释,希望对新手有所启发
如下:
echo %var:~n,k%
我们在这里对每个参数做个说明:"%var",即我们要从中要截取字符的字符串." ~ "取字
符标志符(我是这么理解的),"n" 我们将其理解为指针,"k"我们将其理解为偏移地址.(注
:指针和偏移地址都是从零开始数的)
我们还是用namejm版主的例子做下说明:

代码如下:

@echo off
set str=123456789
rem 定义一个str字符串为123456789
echo 第一个字符为:%str:~0,1%
rem 指针为0,偏移地址为1,即从第0位开始,取1位
echo 头两个字符为:%str:~0,2%
rem 指针为0,偏移地址为2,即从第0位开始,取2位
echo 头5个字符为:%str:~0,5%
rem   指针为0,偏移地址为5,即从第0位开始,取5位
echo 去掉最后一个字符后的字符串为:%str:~0,-1%
rem 当"k"为负值时,我们可以这样理解:从指针开始处开始取其后面所有字符,然后减去后面"abs(k)位"..所以这个句字我们可以做如下解释:从第0位开始取其全部字符
为:123456789然后从后面减去abs(k)位,所以最后结果为:12345678
echo 去掉最后3个字符后的字符串为:%str:~0,-3%
rem   该句解释同上↑
echo 最后一个字符为:%str:~-1%
rem   参数"n,"和"k"都可以为缺省,缺省"n,"时可以理解为:从abs(k)位开始取其全部
echo 倒数第4个及其之后的字符为:%str:~-4%
rem         解释同上↑
echo 最后一个字符为:%str:~-1,1%
rem   n为负值时,表示从后面开始截取字符,取k位(此时n应从1开始数)
echo 最后一个字符为:%str:~-1,2%
rem   解释同上↑
echo 倒数第4个字符为:%str:~-4,1%
rem   解释同上↑
echo 倒数第4个及其之后的1个字符为:%str:~-4,2%
rem   解释同上↑
echo 倒数第4个及其之后的2个字符为:%str:~-4,3%
rem 解释同上↑
pause

(0)

相关推荐

  • 批处理BAT替换与截取字符串的用法t1=%a:~3%是什么意思

    一.替换用法 例 复制代码 代码如下: @echo off set a=belcome to CMD borld! set temp=%a:b=w% echo %temp% pause 将显示 welcome to CMD world! 即用w替换了变量a中的b. 二.截取用法 字符串最前面的光标所在处表示第0位,第一个字符后面的光标所在表示第一位,依次类推. 为了更好的理解截取用法,下面给出了字符串superhero位数的相关示意图: s u p e r h e r o 0 1 2 3 --

  • 分享dos批处理命令的一些使用技巧(截取字符串)

    截取字符串: set var=10203040 第一数字是位置,第二个位置是长度,第二个位置如果无,默认是结尾,第一个位置如果是负数,则反方向的位置.位置从0开始 复制代码 代码如下: echo %var:~-4,3% echo %var:~0% echo %var:~1% echo %var:~-2% 替换字符串 复制代码 代码如下: echo %var:0=kkk% ;0替换为kkk echo %var:10=kkk% ;10替换为kkk echo %var:20=kkk% echo %va

  • bat 截取字符串(for命令) 推荐收藏

    FOR命令中有一些变量,他们的用法许多新手朋友还不太了解,今天给大家讲解他们的用法! 先把FOR的变量全部列出来:      ~I            - 删除任何引号("),扩展 %I      %~fI          - 将 %I 扩展到一个完全合格的路径名      %~dI          - 仅将 %I 扩展到一个驱动器号      %~pI          - 仅将 %I 扩展到一个路径      %~nI          - 仅将 %I 扩展到一个文件名      %~

  • DOS截取字符串的方法

    为了说明截取变量中字符串的问题曾经举过如下这个例子: 复制代码 代码如下: @echo offset str=123456789echo 第一个字符为:%str:~0,1%echo 头两个字符为:%str:~0,2%echo 头5个字符为:%str:~0,5%echo 去掉最后一个字符后的字符串为:%str:~0,-1%echo 去掉最后3个字符后的字符串为:%str:~0,-3%echo 第4个字符为:%str:~3,1%echo 第4个及其之后的3个字符为:%str:~3,4%echo 最后

  • 正则表达式截取字符串的方法技巧

    有这么一段字符串: [数字]字符串 结果 取  a=数字 b=字符串 截取方法1: int a = Convert.ToInt32(txt1.Text.Trim().Replace('[', ']').Split(']')[1]); string b = txt1.Text.Trim().Replace('[', ']').Split(']')[2]; 截取方法2: string str = "[数字]字符串"; Regex reg = new Regex(@" ([^]+)

  • Java截取字符串的方法

    本文实例讲述了Java截取字符串的方法.分享给大家供大家参考.具体实现方法如下: public static void main(String args[]) { //以该字符第一次出现,开始截取 //String str="abc.def"; //String str="abc.def.sdfsdf.fsdfd.ddddd.ggggg.ttttt"; //String str1=str.substring(str.indexOf(".")+1,

  • php按单词截取字符串的方法

    本文实例讲述了php按单词截取字符串的方法.分享给大家供大家参考.具体分析如下: 这里指定字符串和单词数量进行截取 复制代码 代码如下: <?php function limit_words($string, $word_limit) {     $words = explode(" ",$string);     return implode(" ",array_splice($words,0,$word_limit)); } //Example Usage

  • Go语言按字节截取字符串的方法

    本文实例讲述了Go语言按字节截取字符串的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: // 按字节截取字符串 utf-8不乱码 func SubstrByByte(str string, length int) string {     bs := []byte(str)[:length]     bl := 0     for i:=len(bs)-1; i>=0; i-- {         switch {         case bs[i] >= 0 &

  • go语言按显示长度截取字符串的方法

    本文实例讲述了go语言按显示长度截取字符串的方法.分享给大家供大家参考.具体分析如下: 根据显示长度截取字符串,之前php用的utf8编码,10个英文和10个汉字的显示长度差距太大,按字节截取的话又会出错出现截取半个汉字的情况,所以写了这两个函数. 这两天在折腾golang,所以就用golang重写了着连个函数.代码如下: 复制代码 代码如下: package main import (     "fmt" ) func main() {     fmt.Println(show_st

  • C#区分中英文按照指定长度截取字符串的方法

    本文实例讲述了C#区分中英文按照指定长度截取字符串的方法.分享给大家供大家参考.具体如下: 这段C#代码用于按照指定的长度截取字符串,一个中文字符算2个字符,按照这个方法截取的字符串基本可以保持显示长度一致 /// <summary> /// 截取文本,区分中英文字符,中文算两个长度,英文算一个长度 /// </summary> /// <param name="str">待截取的字符串</param> /// <param nam

  • Jquery循环截取字符串的方法(多出的字符串处理成"...")

    如下所示: $('a[rev="title"]').each(function () { var u = $.trim($(this).html()); $(this).html(SetSub(u, 10)) }); SetSub相当于substr 以上这篇Jquery循环截取字符串的方法(多出的字符串处理成"...")就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • 【C#基础】Substring截取字符串的方法小结(推荐)

    前言 在公司的图书馆项目中曾经用过截取字符串的方法,项目是java语言的:最近在公司的另一个项目中又需要截取字符串,一种环境是C#语言,一种环境是SQL Server存储过程:先来说一下后台程序中截取字符串的方法. 正文 c#中截取字符串主要是借助Substring 这个函数. string string.Substring(int startIndex,int length); 说明: 如果传入的参数为两个长整参数,第一个参数指子字符串的起始位置,也就是开始截取的位置,第二个参数指截取的长度.

  • java substring 截取字符串的方法

    substring(参数)是java截取字符串的一个方法. 它有两种传参的方式: 第一种:public String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串,该字符串从指定索引出的字符开始,到此字符串末尾结束. 第二种:public String substring(int beginIndex,int endIndex) 同样返回一个新的字符串,该字符串从指定的beginIndex索引处开始,到指定的endIndex索引值结束. 不包

随机推荐