Board logo

标题: [文本处理] 【已解决】如何在多文本中,删除某个指定字符前后的换行符? [打印本页]

作者: 屡败屡战    时间: 2018-3-24 09:12     标题: 【已解决】如何在多文本中,删除某个指定字符前后的换行符?

本帖最后由 屡败屡战 于 2018-3-27 09:28 编辑

我有问题求助,在大量的文本中,插入某个特殊字符“¥”,我想要的效果是:如何在指定字符串(例如“¥”)的“之前”与“之后”均删除换行符,使指定字符“¥”相邻的上、下行,合并成一行?

第一个问题:

举例:
某某文本文件(其内容是)

444444
777777
555555

888888
3333333
77778955

我想要的效果:

444444
777777
555555¥888888
3333333
77778955


第二个问题:

我想要的效果是:在大量的文本中,如何在指定字符(例如“¥”)之后删除换行符,使指定字符“¥”所在的上、下行,合并成一行?
举例:
某某文本文件(其内容是)

444444
777777
555555¥
888888
3333333
77778955

我想要的效果:

444444
777777
555555¥888888
3333333
77778955


第三个问题:

我想要的效果是:在大量的文本中,如何在指定字符(例如“¥”)之前删除换行符,使指定字符“¥”所在的上、下行,合并成一行?
举例:
某某文本文件(其内容是)

444444
777777
555555
¥888888
3333333
77778955

我想要的效果:

444444
777777
555555¥888888
3333333
77778955


我要处理的是大量的文本文件(而不是单个文本),指定字符是“¥”,望大神们给些启示!!
作者: yhcfsr    时间: 2018-3-24 14:32

本帖最后由 yhcfsr 于 2018-3-24 14:35 编辑

问一:
  1. @echo off&setlocal enabledelayedexpansion
  2. set "ScFile=D:\test\test.txt"
  3. set/a flag=1
  4. (for /f  "delims=" %%a in ('type "%ScFile%"') do (
  5. echo %%a|findstr /r "¥">nul&&set/a flag=1||(if !flag! equ 0 ( echo. ) else ( set/a flag=0 ))
  6. set/p=%%a<nul
  7. ))>out.txt
  8. pause&exit
复制代码
问二:
  1. @echo off&setlocal enabledelayedexpansion
  2. set "ScFile=D:\test\test.txt"
  3. set/a flag=1
  4. (for /f  "delims=" %%a in ('type "%ScFile%"') do (
  5. set/p=%%a<nul
  6. echo %%a|findstr /r "¥">nul|| echo.
  7. ))>out.txt
  8. pause&exit
复制代码
申明一点:bat处理文本,对特殊英文字符很敏感。如果文本中出现特殊英文字符,文本会失真。
作者: 屡败屡战    时间: 2018-3-24 14:42

老师好:
我求的是:处理的是大量的文本文件(而不是单个文本),指定字符是“¥”。
作者: yhcfsr    时间: 2018-3-24 22:15

回复 3# 屡败屡战


    一个都能搞定,批量不是一个FOR语句的事情吗?
不能老是拿来主义吧?好歹上等兵了,这么简单的事情自己学着做
作者: 屡败屡战    时间: 2018-3-24 22:34

老师好:
  我现在充其量只会改改代码中的数字,大部分是理解不了,望老师提供些批处理学习的网址
作者: yhcfsr    时间: 2018-3-25 08:24

本帖最后由 yhcfsr 于 2018-3-25 08:28 编辑

回复 5# 屡败屡战


    学习BAT有比这更好的地方吗?论坛那个教程版块的帖子看了吗?那几篇置顶帖子看熟了先。
反正我就是在这学的,一两天就会了,多研究大神们的代码。
论坛有QQ群,里面很多热心人教你。
看我注册时间,基本就是注册时开始学的。
作者: 屡败屡战    时间: 2018-3-25 10:07

请写个加入For循环的代码,这样方便我可以前后代码对照的研究下,便于照猫画虎。
作者: WHY    时间: 2018-3-26 18:02

本帖最后由 WHY 于 2018-3-26 22:15 编辑

  1. @if(0)==(0) echo off
  2. dir /b *.txt | cscript //nologo //e:jscript "%~f0"
  3. pause & exit
  4. @end
  5. var fso = new ActiveXObject('Scripting.FileSystemObject');
  6. while(!WSH.StdIn.AtEndOfStream){
  7.     var strFile = WSH.StdIn.ReadLine();
  8.     var objFile = fso.OpenTextFile(strFile, 1);
  9.     var s = objFile.ReadAll();
  10.     s = s.replace(/[\r\n]+(¥)/g, '$1').replace(/(¥)[\r\n]+/g, '$1');
  11.     objFile.Close();
  12.     fso.OpenTextFile(strFile + '.LOG', 2, true).Write(s);
  13. }
复制代码

第12行
  1. s = s..replace(/(¥)[\r\n]+/g, '$1');
复制代码

第12行
  1. s = s.replace(/[\r\n]+(¥)/g, '$1');
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2