标题: [文本处理] [已解决]再提一个批处理实现TXT排版的问题,困扰我好久了。 [打印本页]
作者: 每天几分 时间: 2012-9-24 23:12 标题: [已解决]再提一个批处理实现TXT排版的问题,困扰我好久了。
本帖最后由 每天几分 于 2012-9-25 11:35 编辑
多谢楼下2位大大,熬夜写代码,辛苦了!半角空格我自己再处理一下吧。
是这样:行首有2个空格,左引号在上一行,右引号在下一行或下几行,这种情况怎样将下面的句子切换上来。
示例:-
- “遇见了你,从那以后,我就跟你走了。
- 天涯海角,**蛮荒,从此暗无天日,从此日夜担忧,被人追杀。
- 可是,我从来没有后悔过的……”
复制代码
要求:-
- “遇见了你,从那以后,我就跟你走了。天涯海角,**蛮荒,从此暗无天日,从此日夜担忧,被人追杀。可是,我从来没有后悔过的……”
复制代码
作者: terse 时间: 2012-9-25 00:02
本帖最后由 terse 于 2012-9-25 03:01 编辑
- @echo off & setlocal enabledelayedexpansion
- (for /f "tokens=*" %%i in (a.txt) do (
- set "str=%%~nxi"
- if defined var (
- set "var=!var!%%~nxi"
- ) else if "!str:“=!" neq "!str!" (set var=!str!)else echo; %%i
- if "!str:”=!" neq "!str!" echo; !var!&set "var="
- ))>tem.txt
- tem.txt
- pause
复制代码
作者: 每天几分 时间: 2012-9-25 00:13
本帖最后由 每天几分 于 2012-9-25 00:39 编辑
回复 2# terse
后面多了一行。。。
作者: 每天几分 时间: 2012-9-25 00:38
本帖最后由 每天几分 于 2012-9-25 10:59 编辑
回复 2# terse
好像还不行,文本后面还有其他句子的,而且是隔行、隔段落出现。
作者: terse 时间: 2012-9-25 00:48
回复 4# 每天几分 再试如何
作者: 每天几分 时间: 2012-9-25 01:07
本帖最后由 每天几分 于 2012-9-25 11:00 编辑
回复 5# terse
额,应该是我说得不清楚了。。。引号前面、后面还有正常句子的,怎么也过滤掉了。。。
作者: terse 时间: 2012-9-25 01:53
回复 6# 每天几分
已修改 这样吗?
作者: 每天几分 时间: 2012-9-25 02:14
本帖最后由 每天几分 于 2012-9-25 11:02 编辑
回复 7# terse
还差一点点,正常的引号所在行、段,其他正常句子,排版要保持不变。
作者: CrLf 时间: 2012-9-25 02:59
本帖最后由 CrLf 于 2012-9-25 03:21 编辑
保存为vbs- Set fso = CreateObject("SCripting.FileSystemObject")
-
- ts = fso.OpenTextFile("a.txt",1).ReadAll
- WScript.Echo ts
- Set re = New RegExp
- re.Global = True
- re.MultiLine = False
- re.Pattern = "(“.*?)\r\n\s*(.*”)"
-
- fso.OpenTextFile("a.txt",2).write re.Replace(ts,"$1$2")
复制代码
作者: terse 时间: 2012-9-25 03:00
回复 8# 每天几分
稍改了 较多的情况 导致代码的不通用 如不行 明天了
作者: 每天几分 时间: 2012-9-25 11:05
回复 9# CrLf
不好意思啊,文本情况有点特殊,需要具体操作测试才能交代清楚给出例子的。。。
原文例子:(行首2个全角空格,俺复制到代码里居然出现4个半角空格了。)
“天地不仁,以万物为诌狗!”
这世间本是没有什么神仙的,但自太古以来,人类眼见周遭世界,诸般奇异之事,电闪雷鸣,狂风暴雨,又有天灾人祸,伤亡无数,哀鸿遍野,决非人力所能为,所能抵挡。遂以为九天之上,有诸般神灵,九幽之下,亦是阴魂归处,阎罗殿堂。
……
“遇见了你,从那以后,我就跟你走了。
天涯海角,**蛮荒,从此暗无天日,从此日夜担忧,被人追杀。
可是,我从来没有后悔过的……”
……
“九天玄刹,化为神雷。
煌煌天威,以剑引之!”
……
周一仙道:“你懂什么,那大个子所学和佛门颇有些渊源,而佛门真法正好最讲究寂灭定心之道,对这狐媚惑心妖术天生便有抗力。
但青云门乃是道家,在这点上便差了许多,以这少年的修行,居然能有这份定力,实在少见、少见!”
……
她在风雨中,低声自语,对着张小凡,又彷彿是对着自己深心,轻轻,轻轻道:“你救我护我,不惜自己的性命,我便一般对你了。
你心中苦楚,天知我知,我不能分担你的痛楚,便与你一道承担。总希望有一日,你能与心中爱人,欢欢喜喜在一起的……”
话声越来越轻,渐渐消逝。风雨更狂,那身影这般柔弱,若风中受伤的小草,摇摆不定。张小凡心头恍惚,如梦似幻。
……
夜色黑沉,苍穹无语!
“我们要活下去,我们要最好的土地!”他恶狠狠地说道。
前方,那个巨人一般的族长没有回头,但他愤怒而沉重的喘息已经透露了他的心情。
作者: 每天几分 时间: 2012-9-25 11:16
回复 10# terse
出现半角空格,是俺11L说的情况了。俺没交代清楚。。。
作者: terse 时间: 2012-9-25 11:32
回复 12# 每天几分
把代码里两处echo;后面的空格去掉使之为 echo;!var!和echo;%%i再试
作者: 每天几分 时间: 2012-9-25 11:46
本帖最后由 每天几分 于 2012-9-25 11:57 编辑
回复 13# terse
嗯,除了句号后面还有2个全角空格,大部分已经解决了,还有一种情况:引号之间存在多行的,切换不上来。
如:
“反反复复。”反反复复说:“反反复复发反反复复,反反复复发反反复复反反复复发反反。复复反反复复反反复复发反反复复反反复复发反反复复,反反复复发反反复复反反复复。
反反复复发反反复复,反反复复发反反复复反反复复,发反反复复反反复复。
反反复复,发反反复复反反复复发反反复复。反反复复发反反复复反反复复,反反复复发反反复复,反反复复发反反复复反反复复发反反复复反反复复。
反反复复发反反复复反反复复,发反反复复反反复复反反复复发反反,复复反反复复发反反复复,反反复复发反反复复反反复复。
反反复复,反反复复反反复复发反反复复,反反复复发反反复复反反复复发反反复复反反复复。”
作者: CrLf 时间: 2012-9-25 19:30
回复 11# 每天几分
以后还是上传个有代表性的附件作为测试样本吧,1、2k 就够了
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |