请教字符串操作
有一个记事本,内容如下:10 Displ. Reaction
3(OPE) -3 0 108 610.5 138.9 -96.7
MAX 3/ 3 0/ 3 108/ 3 610.5/ 3 138.9/ 3 96.7/ 3
45 Prog DesignVSH
3(OPE) 0 0 -538 0.0 0.0 0.0
MAX 0/ 3 0/ 3 538/ 3 0.0/ 3 0.0/ 3 0.0/ 3
需要进行如下操作:
1.去掉行与行之间的空格行;
2.对于数字后面跟不带括号的字母的,中间的空格不变;
3.空格之间用逗号隔开,但是数字和带括号的字符直接的空格不变;
4.字母与数字之间的空格用逗号隔开,但是/与数字之间的空格不变。
上述处理完应为:
10 Displ. Reaction
3(OPE), -3,0,108,610.5,138.9, -96.7
MAX,3/ 3, 0/ 3,108/ 3,610.5/ 3,138.9/ 3,96.7/ 3
45 Prog DesignVSH
3(OPE), 0, 0, -538, 0.0, 0.0,0.0
MAX,0/ 3, 0/ 3, 538/ 3 ,0.0/ 3,0.0/ 3,0.0/ 3
应如何操作呢,请各位指教
[ 本帖最后由 jchang 于 2008-10-28 17:40 编辑 ] 先请问如何删掉记事本中的空行? 消除空行:
While 1
$File = FileReadLine('XXX.txt', $i)
If @error = -1 then
exit
Else
If $File = '' Then ContinueLoop
EndIf
FileWriteLine('xxx.txt', $File)
Wend
多谢指点!我用正则表达式也基本达到了要求,主要语句如下:
$line1 = StringRegExpReplace($line1," {1,}\(", "\(")
$line2=$line1
$line2 = StringRegExpReplace($line2,"^\s+", "")
$text=$line2
$text = StringRegExpReplace($text, "/ {1,}", "/")
$numreplacements = $text
$text = StringRegExpReplace($numreplacements, "\s+", ",")
Local $show = '', $i = 0
While 1
$offset = 1
$i += 1
$String = FileReadLine('test.txt', $i)
If @error = -1 then ExitLoop
$File = StringRegExp($String, '^\d{2}\s+.+', 2, 1)
If @error = 0 Then
$show &= $File & @CRLF
ContinueLoop
EndIf
$File = StringRegExp($String, '^.+\)', 2, 1)
If @error = 0 Then
$show &= $File & ','
StringReplace($String, $File, '')
EndIf
$File = StringRegExp($String, '^\s+MAX', 2, 1)
If @error = 0 Then
$show &= $File & ','
StringReplace($String, $File, '')
EndIf
Do
$File = StringRegExp($String, '\s+(-?\d+\.?\d?/?\s+?\d?+)', 1, $offset)
If @error = 0 Then
$offset = @extended
$show &= $File & ','
Else
$show = StringTrimRight($show, 1)
$show &= @CRLF
ExitLoop
EndIf
Until 0
Wend
MsgBox(0,'',$show)
多谢楼上的脚本,基本实现了所有的功能,不过
45 Prog DesignVSH
这行执行后好像只显示45,另外能否解释下StringRegExp的用法呢! 原帖由 jchang 于 2008-10-27 17:02 发表 http://www.autoitx.com/images/common/back.gif
多谢楼上的脚本,基本实现了所有的功能,不过
45 Prog DesignVSH
这行执行后好像只显示45,另外能否解释下StringRegExp的用法呢!
按你贴出来的那个样式,是能正确显示的!如果有不正确的显示,按实际情况修改!
页:
[1]