[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

【练习-018】按要求整理并改写文本

出题目的:
        掌握字符截取技巧
        掌握学符替换技巧
        掌握改写文本技巧        
解题要求:
        代码通用、高效
        尽量简洁
        不生成临时文件
加分规则:
         思路独特基准分5分
        代码高效、通用基准分4分
        技巧高超基准分3分
        代码简洁基准分2分
        完美代码加分15分           
题目如下:
  有文本a.txt
  1. Network vertically: In the research phase of your job hunt,talk to
  2. people who are on a level above you in your desired industry. They'll
  3. have some insights that people at your own level won't have,and will be
  4. in a good position to hire you or recommend you to be hired. Keep your
  5. spirits up. Looking for a job is one of the toughest things you will
  6. ever have to do. Maintain your confidence,stay persistent,and think
  7. positively,and eventually you will get a job that suits you.
复制代码
1 要求通过批处理将文本中的you全替换成me并输出,但your不能变
2 要求通过批处理将文本整理成如下格式(遇:号和.号换行并在行首空两格),并生成文本b.txt:
  1. Network vertically:
  2.   In the research phase of your job hunt,talk to people who are on a level abov
  3. e me in your desired industry.
  4.   They'll have some insights that people at your own level won't have,and will
  5. be in a good position to hire me or recommend me to be hired.
  6.   Keep your spirits up.
  7.   Looking for a job is one of the toughest things me will ever have to do.
  8.   Maintain your confidence,stay persistent,and think positively,and eventuall
  9. y me will get a job that suits me.
复制代码
3 要求将文本b.txt中的Looking for a job is one of the toughest things me will ever have to do.
这句改写成bathomework is a nice job,其它的不变。
解题限制:
  高手请暂做旁观,请新手老手解答。
补充两点:
       1 a.txt中只有一行
       2 解题中不使用第三方工具(并不是提倡不使用第三方)

[ 本帖最后由 batman 于 2008-8-30 13:00 编辑 ]
***共同提高***

  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. for /f "tokens=*" %%i in (a.txt) do (
  4. set i=%%i
  5. set i=!i: you = me !
  6. set i=!i: you.= me.!
  7. set i=!i: you,= me,!
  8. set i=!i: you?= me?!
  9. set i=!i: you^^^!= me^^^!!
  10. echo !i!>>a.txt
  11. )
复制代码

[ 本帖最后由 yslyxqysl 于 2008-9-19 20:33 编辑 ]

TOP

楼上的出现了书写错误吧:@echo,off
***共同提高***

TOP

2楼代码有误,至少最后一个you.就替换不了!
这样应该就可以了!
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=*" %%i in (a.txt) do (
  3. set aa=%%i
  4. set aa=!aa:you=me!
  5. set aa=!aa:mer=your!
  6. echo !aa!
  7. )
  8. pause>nul
复制代码


呵呵,谢谢batman
为什么我老是出错呢!

[ 本帖最后由 wangwei4106 于 2008-8-30 15:15 编辑 ]
1

评分人数

要想提高多做,多想,多问!
空间http://www.wangwei4106.ys168.com

TOP

加个逗号是为了测试,嘻嘻。

TOP

当文本出现young的时候,4楼的代码有些麻烦

TOP

郁闷!
呵呵
我也没有想更多了!
谢谢提醒啊,我再去看看!
要想提高多做,多想,多问!
空间http://www.wangwei4106.ys168.com

TOP

第一题:
  1. sed "s/you /me /g" a.txt
复制代码
Unix for Windows 工具集
http://bbs.bathome.net/thread-1114-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

第二题:
  1. @echo off
  2. copy a.txt b.txt
  3. change b.txt /from ":" /to ":&H0D0A  "
  4. change b.txt /from "." /to ".&H0D0A  "
复制代码
文本修改工具change.exe
http://bbs.bathome.net/viewthread.php?tid=1685
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

不知道你们搞这个工具出来,是不是有点离题了……
其实我还不会用这些个工具!^_^
要想提高多做,多想,多问!
空间http://www.wangwei4106.ys168.com

TOP

原帖由 wangwei4106 于 2008-8-30 11:04 发表
2楼代码有误,至少最后一个you.就替换不了!
这样应该就可以了!
@echo off&setlocal enabledelayedexpansion
for /f "tokens=* delims= " %%i in (a.txt) do (
set aa=%%i
set aa=!aa:you=me!
set aa=!aa:mer ...

为什么要tokens=* delims= 呢?
***共同提高***

TOP

写出了  晚上来贴
现在就Looking for a job is one of the toughest things me will ever have to do.
这句里will ever的空格有不?因为我这里替换没成功 去了空格就可以

[ 本帖最后由 terse 于 2008-8-30 13:08 编辑 ]

TOP

帖上两个(都不怎么通用),不知哪个会得到版主的认可,或都不合???
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in (test.txt) do (
  4.    call set "str=%%str%%%%a"
  5. )
  6. :lp
  7. for /f "tokens=1* delims=:." %%a in ("%str%") do (
  8.    if not defined home (echo %%a:&set home=bat) else (
  9.       set "var= %%a."
  10.       if /i "!var:~2,7!"=="looking" (echo   Bathomework is a nice job.) else (
  11.          set "var=!var:you =me !"&set "var=!var:you.=me.!"&echo !var!
  12.       )
  13.    )
  14.    if not "%%b"=="" set "str=%%b"&goto :lp
  15. )
  16. pause>nul
复制代码
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in (test.txt) do (
  4.    set "str=%%a"
  5.    call :lp
  6. )
  7. pause>nul
  8. goto :eof
  9. :lp
  10. for /f "tokens=1*" %%i in ("%str%") do (
  11.    set "v=%%i"
  12.    if "!v!"=="you" set "v=me"
  13.    if "!v!"=="you." set "v=me."
  14.    call set "var=%%var%%%%v%% "
  15.    if "!var:~-2!"==": " (echo !var!&set "var=")
  16.    if "!var:~-2!"==". " (
  17.       if /i "!var:~,7!"=="looking" (
  18.          echo   Bathomework is a nice job.&set "var="
  19.       ) else (echo   !var!&set "var=")
  20.    )
  21.    if not "%%j"=="" set "str=%%j"&goto :lp
  22. )
复制代码

TOP

回复 13楼 的帖子

兄的代码是否考虑过于复杂了。
------------------------------------
没想到改题,屏蔽原有内容。

[ 本帖最后由 pusofalse 于 2008-8-30 15:21 编辑 ]
心绪平和,眼藏静谧。

TOP

提示:考虑问题复杂化,解决问题简洁化
***共同提高***

TOP

返回列表