|
pusofalse
银牌会员
    
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『楼 主』:
如何截取变量中的倒数第二个字符串~?
var=abc def ghi jkl mno
输出jkl
var的值不定。。。 其中总是有空格,以空格作为分割符 输出倒数第二个字符串~
^_^
|
|
2008-5-11 23:34 |
|
|
pusofalse
银牌会员
    
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
2 楼』:
抛砖引玉一下~
@echo off&setlocal enabledelayedexpansion
:: var=abc def ghi jkl mno 输出jkl
set var=abc def ghi jkl mno
set var=%var: =.%
for %%a in (%var%) do (
set var=%%~na
set var=!var:.= !
for %%i in (!var!) do set var=%%i
)
echo %var%
pause
|
|
2008-5-11 23:43 |
|
|
bat-zw
金牌会员
      永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
3 楼』:
@echo off&setlocal enabledelayedexpansion
:begin
cls&set /p var=请输入以空格格开的n组字符串:
if "%var%"=="" goto begin
for %%i in (%var%) do (
set/a n+=1,m+=1
set _!n!=%%i
)
set /a m-=1
cls&echo 倒数第二组字符串为:!_%m%!
pause>nul
[ Last edited by zw19750516 on 2008-5-11 at 11:48 PM ]
|

|
|
2008-5-11 23:45 |
|
|
bat-zw
金牌会员
      永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
4 楼』:
我还是有点粗心,对着写老是写错字符,哎!
|

|
|
2008-5-11 23:51 |
|
|
pusofalse
银牌会员
    
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
5 楼』:
高!
我的只能只能截取倒数第二个。。。
你的却能任意截取~
赞佩!~
|
|
2008-5-11 23:52 |
|
|
lxmxn
版主
       
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
|
2008-5-11 23:53 |
|
|
pusofalse
银牌会员
    
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
7 楼』:
Originally posted by lxmxn at 2008-5-11 11:53 PM:
我也来一个~@echo off & SetLocal EnableDelayedExpansion
set var=abc def ghi jkl mno
for %%a in (%var%) do (
set result=!temp!
set temp=%%a
)
echo.%result%
版主能解释下吗?~ 不懂~
|
|
2008-5-11 23:57 |
|
|
pusofalse
银牌会员
    
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
|
2008-5-11 23:59 |
|
|
HAT
版主
       
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
9 楼』:
版主的思路值得学习,我刚刚想到这里版主已经把代码贴出来了,佩服。
|
|
2008-5-11 23:59 |
|
|
bat-zw
金牌会员
      永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
10 楼』:
Originally posted by lxmxn at 2008-5-11 23:53:
我也来一个~@echo off & SetLocal EnableDelayedExpansion
set var=abc def ghi jkl mno
for %%a in (%var%) do (
set result=!temp!
set temp=%%a
)
echo.%result%
版主的方法确实妙,但不足之处还是不通用。
|

|
|
2008-5-12 00:00 |
|
|
lxmxn
版主
       
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
11 楼』:
Originally posted by pusofalse at 2008-5-11 23:57:
版主能解释下吗?~ 不懂~ for 循环到最后一次的时候,将 result 的值赋值为 temp 的值,而此时 temp 的值真好是倒数第二次迭代的 %%a,所以可以得到倒数第二个字符串。
|
|
2008-5-12 00:01 |
|
|
pusofalse
银牌会员
    
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
12 楼』:
Originally posted by lxmxn at 2008-5-12 12:01 AM:
for 循环到最后一次的时候,将 result 的值赋值为 temp 的值,而此时 temp 的值真好是倒数第二次迭代的 %%a,所以可以得到倒数第二个字符串。 谢谢~~明白了~
|
|
2008-5-12 00:02 |
|
|
slore
铂金会员
      
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
13 楼』:
@echo off
set x=2
set var=abc def ghi jkl mno
set var=%var: =.%
Call :f1 %var%
echo %var:~1%
pause>nul
exit
:f1
set /a n+=1
if %n% equ %x% Set var=%~x1&goto :end
Set var=%~n1
Call :f1 %var%
:end
|
|
2008-5-12 00:07 |
|
|
26933062
银牌会员
    
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
 『第
14 楼』:
我也来一个。 @echo off
set var=afb dedf dflke yes mno
call :loop %var%
pause
:loop
if "%3"=="" echo %1&goto :eof
shift&goto loop
|

致精致简! |
|
2008-5-12 00:07 |
|
|
bat-zw
金牌会员
      永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
15 楼』:
Originally posted by 26933062 at 2008-5-12 00:07:
我也来一个。@echo off
set var=afb dedf dflke yes mno
call :loop %var%
pause
:loop
if "%3"=="" echo %1&goto :eof
shift&goto loop
利用shift移位超强,学习了!!!
|

|
|
2008-5-12 00:14 |
|