Board logo

标题: 如何提取 <字母+数字>组合中的数字 [打印本页]

作者: mouzeming     时间: 2006-12-28 04:59    标题: 如何提取 <字母+数字>组合中的数字

用户输入  字母和数字的组合。。比如 home001
我要如何才能提取001
字母和数字都不限长度。。
不知道批处理能不能实现.
望高手指点.论坛里没有搜到相关资料
作者: namejm     时间: 2006-12-28 06:12
  数字和字母有可能是混杂的吗?还是数字是一截,字母是另外一截?
作者: everest79     时间: 2006-12-28 06:19
我见过一例,要用字典

setlocal enabledelayedexpansion
set /p a=..
set b=%a%
for /f %%i in (dict.txt) do set b=!b:%%i=!
记不清了
作者: mouzeming     时间: 2006-12-28 06:28


  Quote:
Originally posted by namejm at 2006-12-28 06:12 AM:
  数字和字母有可能是混杂的吗?还是数字是一截,字母是另外一截?

是的。前面是字母。后面是数字。
这个是固定的。
作者: 9527     时间: 2006-12-28 06:33
不管你的数字和文字是否混杂,全办,呵呵......
没有测试特殊符号
@echo off&setlocal
set/p aa=Enter your text:
call :pp
echo %b%
goto :eof
:pp
:loop
if not defined aa goto :eof
echo %aa:~0,1%|findstr "[0-9]">nul&&set b=%b%%aa:~0,1%
set aa=%aa:~1%&goto loop
goto :eof
不过感觉这段代码有些臃肿

[ Last edited by 9527 on 2006-12-28 at 06:34 AM ]
作者: tao0610     时间: 2006-12-28 06:35
直接把字母替换没就可以!
作者: redtek     时间: 2006-12-28 06:36
精彩!!!欣赏~~~
作者: vkill     时间: 2006-12-28 06:41
set "var=abc123 &^*"
echo "%var%"|sed "s/^\x22//;s/\x22$//;s/[a-z]//g"
作者: namejm     时间: 2006-12-28 07:08
  呵呵,其实我只是想问问楼主,只截取指定的某一段数字还是提取字符串中所有的数字。如果只是提取所有的数字的话,那就好办得多,直接把字母替换成空值就可以了,但是楼主的本意似乎不是这样。
作者: 9527     时间: 2006-12-28 08:29
那就请namejm大版主把楼主所需要的代码放出来吧,也让我们这些晚辈多多学习....
作者: zh159     时间: 2006-12-28 08:36


  Quote:
Originally posted by mouzeming at 2006-12-27 17:28:

是的。前面是字母。后面是数字。
这个是固定的。

按楼主说法,数据前面是字母。后面是数字,是固定的,那 namejm 版主就不用担心字母数字混杂了
@echo off
set "var=abc123"
for %%n in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do call set var=%%var:%%n=%%
echo %var%
pause

作者: mouzeming     时间: 2006-12-28 11:28
谢谢大家了。。明天在公司试下。。

b=%b%%aa:~0,1%

set "var=abc123 &^*"
echo "%var%"|sed "s/^\x22//;s/\x22$//;s/[a-z]//g"

set var=%%var:%%n=%%

这些麻烦大家解释下。实在是看不懂。搜索也无从下手.!
作者: zh159     时间: 2006-12-28 11:46
8 楼的要“sed”这个软件
作者: redtek     时间: 2006-12-28 11:57
顶~~欣赏~~~!!!
作者: jmz573515     时间: 2006-12-28 21:59
有一个想法,不知道输入密码时能不能用到这种方法?
作者: mouzeming     时间: 2006-12-28 22:08
问题又来了.不好意思,
数字是提出来了.比如用户输入的是a001 & a100  
如果是像a001这样的数.我需要的是把前面的a00去掉..
如果是a100这样的数,我只需要要a100去掉,上面的代码可以实现

也就是是说对用户输入的数值要有一个判断.如果字母后面的数字是0的话不取.取0后面的数.像我说的上面的a001.我只取1. 但是别的输入a100我要取100
这个感觉比较难.
作者: vkill     时间: 2006-12-29 02:31


  Quote:
Originally posted by jmz573515 at 2006-12-28 21:59:
有一个想法,不知道输入密码时能不能用到这种方法?

可以啊
作者: zh159     时间: 2006-12-31 00:03


  Quote:
Originally posted by mouzeming at 2006-12-28 09:08:
问题又来了.不好意思,
数字是提出来了.比如用户输入的是a001 & a100  
如果是像a001这样的数.我需要的是把前面的a00去掉..
如果是a100这样的数,我只 ...


@echo off
set "var=abc000123000"
for %%n in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do call set var=%%var:%%n=%%
:loop
if "%var:~0,1%" == "0" set var=%var:~1%&&goto loop
echo %var%
pause

作者: minmin888     时间: 2007-5-8 19:55
@echo off
setlocal enabledelayedexpansion

set/p aa=Enter your text:

if not defined aa goto :eof
set number=

:loop
if not defined aa goto :e
echo %aa:~0,1%|findstr "[0-9]">nul&&set number=!number!%aa:~0,1%
set aa=%aa:~1%
goto loop
:e
echo !number!
pause