设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3776|回复: 13
打印 上一主题 下一主题

[已经解决] 请教编辑字符串有关的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
167
在线时间
434 小时
注册时间
2009-1-1
帖子
643
跳转到指定楼层
1
发表于 2010-9-5 17:28:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 赛露休斯 于 2010-9-6 02:47 编辑

我有一个记事本上面有这样6行,其中第2行和第6行为空行,其中第3行的行首和行尾都有空格
ab c

    de12      
fg()      
q35ty


现在我打算编辑一下:
1、在行尾处加上 /  号
2、如果是 空行 或是 最后一个非空行 则不加 / 号
3、去掉所有换行
4、行首或行尾有空格时去掉空格,行间的空格则保留
使最终的字符串为 abc/de12/fg()/q35ty

点评

请在得到答案后在认可帖认可[url]http://bbs.66rpg.com/thread-155199-1-1.html[/url]  发表于 2010-9-15 03:50

Lv3.寻梦者

孤独守望

梦石
0
星屑
3132
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

2
发表于 2010-9-5 17:29:35 | 只看该作者
s = File.open("x.txt").read
s.gsub! (/\n/) {"/"}
……没测试
菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
167
在线时间
434 小时
注册时间
2009-1-1
帖子
643
3
 楼主| 发表于 2010-9-5 17:45:12 | 只看该作者
回复 IamI 的帖子
谢谢,测试成功
才发现主楼发帖时没有考虑到一种情况,现在补上,就是当该行为空行时直接去掉换行,也就是说文本中的空行直接去掉,后面不加 /

   
回复 支持 反对

使用道具 举报

Lv3.寻梦者

宛若

梦石
0
星屑
1568
在线时间
526 小时
注册时间
2007-8-19
帖子
1493

极短24参与开拓者

4
发表于 2010-9-5 18:14:06 | 只看该作者
  1. s = <<e
  2. a

  3. bc
  4. ea
  5. da

  6. e
  7. s.gsub!(/\n\n/){"\\"}
  8. s.gsub!(/\n/){"\\"}
  9. s[-1] = "" if s[-1] == 92
复制代码

点评

两个一并吃?那四个岂不抽了?2个归并为1个把  发表于 2010-9-5 18:28
[url=http://rpg.blue/thread-219730-1-1.html]http://unhero.sinaapp.com/wi.php[/url]
[color=Red]如你所见这是个死坑,没错这就是打我的脸用的[/color]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
167
在线时间
434 小时
注册时间
2009-1-1
帖子
643
5
 楼主| 发表于 2010-9-5 18:26:44 | 只看该作者
本帖最后由 赛露休斯 于 2010-9-5 18:27 编辑

用了楼上的方法,最终返回了 abc/de12/fg()/q35ty/
最后一个非空行q35ty后面多了一个 / 号,没有满足主楼的第2个条件
另外,如果直接用\n\n替换,又如果替换内容是连续2个以上空行比如\n\n\n时发现会多出一个 / 号
最近在研究XAS
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6860
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

6
发表于 2010-9-5 18:56:24 | 只看该作者
用 split 把 read的 String 弄成数组.
再delete ""
循环数组的 0...size











你知道得太多了

回复 支持 反对

使用道具 举报

Lv2.观梦者

旅之愚者

梦石
0
星屑
275
在线时间
812 小时
注册时间
2007-7-28
帖子
2148

贵宾

7
发表于 2010-9-5 21:51:25 | 只看该作者
本帖最后由 六祈 于 2010-9-6 00:39 编辑

file = open("xxx.txt" , "r")
str = file.readlines.collect{|line| line.chomp}.select{|line| line.index(/\S/) != nil}.join("/")
file.close

点评

这个确实可以了,谢谢六祈君^_^  发表于 2010-9-6 00:58
p str 后字符串里的换行符\n没去掉  发表于 2010-9-6 00:27
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
167
在线时间
434 小时
注册时间
2009-1-1
帖子
643
8
 楼主| 发表于 2010-9-5 22:02:02 | 只看该作者
回复 六祈 的帖子

p str  后发现是一排 true/true/true/true/true  这样的
   

点评

用错了……你把collect改成select  发表于 2010-9-6 00:03
回复 支持 反对

使用道具 举报

Lv3.寻梦者

宛若

梦石
0
星屑
1568
在线时间
526 小时
注册时间
2007-8-19
帖子
1493

极短24参与开拓者

9
发表于 2010-9-5 22:10:03 | 只看该作者
s = <<e
a

bc
ea
da


e
s.gsub!(/\n+/){"\\"}
s[-1] = "" if s[-1] == 92
print s
[url=http://rpg.blue/thread-219730-1-1.html]http://unhero.sinaapp.com/wi.php[/url]
[color=Red]如你所见这是个死坑,没错这就是打我的脸用的[/color]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
167
在线时间
434 小时
注册时间
2009-1-1
帖子
643
10
 楼主| 发表于 2010-9-5 22:24:16 | 只看该作者
回复 逸豫 的帖子
发现直接使用{"\\"}是符合条件2,但当我把{"\\"}换成自己需要的{"/"}后,返回的字符串最后一个非空行后面会有一个 / ,也就是da/,不满足条件2了
   
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-27 11:48

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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