找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 47080|回复: 19

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

[复制链接]
发表于 2008-8-30 10:08:08 | 显示全部楼层 |阅读模式
出题目的:
        掌握字符截取技巧
        掌握学符替换技巧
        掌握改写文本技巧        
解题要求:
        代码通用、高效
        尽量简洁
        不生成临时文件
加分规则:
         思路独特基准分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 编辑 ]
发表于 2008-8-30 10:42:09 | 显示全部楼层
  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 编辑 ]
 楼主| 发表于 2008-8-30 10:51:07 | 显示全部楼层
楼上的出现了书写错误吧:@echo,off
发表于 2008-8-30 11:04:08 | 显示全部楼层
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 编辑 ]

评分

参与人数 1PB +2 收起 理由
batman + 2 以资鼓励

查看全部评分

发表于 2008-8-30 11:04:24 | 显示全部楼层
加个逗号是为了测试,嘻嘻。
发表于 2008-8-30 11:08:08 | 显示全部楼层
当文本出现young的时候,4楼的代码有些麻烦
发表于 2008-8-30 11:09:42 | 显示全部楼层
郁闷!
呵呵
我也没有想更多了!
谢谢提醒啊,我再去看看!
发表于 2008-8-30 11:30:18 | 显示全部楼层
第一题:
  1. sed "s/you /me /g" a.txt
复制代码
Unix for Windows 工具集
http://bbs.bathome.net/thread-1114-1-1.html
发表于 2008-8-30 11:42:07 | 显示全部楼层
第二题:
  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
发表于 2008-8-30 11:53:14 | 显示全部楼层
不知道你们搞这个工具出来,是不是有点离题了……
其实我还不会用这些个工具!^_^
 楼主| 发表于 2008-8-30 12:57:12 | 显示全部楼层
原帖由 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= 呢?
发表于 2008-8-30 13:06:25 | 显示全部楼层
写出了  晚上来贴
现在就Looking for a job is one of the toughest things me will ever have to do.
这句里will ever的空格有不?因为我这里替换没成功 去了空格就可以

[ 本帖最后由 terse 于 2008-8-30 13:08 编辑 ]
发表于 2008-8-30 14:44:43 | 显示全部楼层
帖上两个(都不怎么通用),不知哪个会得到版主的认可,或都不合???
  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. )
复制代码
发表于 2008-8-30 15:07:50 | 显示全部楼层

回复 13楼 的帖子

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

[ 本帖最后由 pusofalse 于 2008-8-30 15:21 编辑 ]
 楼主| 发表于 2008-8-30 15:24:13 | 显示全部楼层
提示:考虑问题复杂化,解决问题简洁化
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:39 , Processed in 0.023827 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表