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

Project1

 找回密码
 注册会员
搜索
查看: 3780|回复: 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

Lv1.梦旅人

梦石
0
星屑
167
在线时间
434 小时
注册时间
2009-1-1
帖子
643
14
 楼主| 发表于 2010-9-6 03:36:41 | 只看该作者
回复 紫苏 的帖子
用了以后发现文本中的所有 " 号会变成 \"

   

点评

这是转义字符,你用 print 就看不到了。另外更新了一下,刚才那样写在开头或末尾会有 /  发表于 2010-9-6 03:39
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
13
发表于 2010-9-6 03:22:13 | 只看该作者
本帖最后由 紫苏 于 2010-9-6 03:40 编辑
  1. str = ''
  2. open('1.txt', 'r') { |f|
  3.   str = f.read
  4.   str.gsub!(/(?: *\n *)+/, '/')
  5.   str.gsub!(/(?:^\/|\/$)/, '')
  6. }
  7. print str
复制代码

评分

参与人数 2星屑 +204 收起 理由
六祈 + 200 认可答案
赛露休斯 + 4 ok,能用了

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
167
在线时间
434 小时
注册时间
2009-1-1
帖子
643
12
 楼主| 发表于 2010-9-6 02:44:19 | 只看该作者
7楼的脚本可以成功了,然后9L脚本那里改成47后也能达到类似效果
刚在实际处理文本时发现自己漏考虑到一个条件,就是当该行行首或行尾有空格时去掉空格,其它行间的空格依然保留

点评

改成strip后也能达到这个效果,是这个意思,谢谢帮助  发表于 2010-9-6 20:21
去行首和行尾的空格的话,你把7楼的chomp改成strip就可以了。另外愚者写的是删除掉仅有空格的行,不知道是不是你的意思  发表于 2010-9-6 13:14
最近在研究XAS
回复 支持 反对

使用道具 举报

Lv4.逐梦者

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

贵宾

11
发表于 2010-9-6 00:36:28 | 只看该作者
本帖最后由 后知后觉 于 2010-9-6 00:39 编辑

把 92 改成 47 或 "/"
s.gsub!(/\n+/){"/"}
s[-1] = "" if s[-1] == 47
or
s.gsub!(/\n+/){"/"}
s[-1] = "" if s[-1] == "/"

点评

额.对了.要用 "/" 话话要把前面的 [-1] 写成 [-1, 1]  发表于 2010-9-6 11:34
"/"不可以…… 除非s[-1].chr == "/"  发表于 2010-9-6 11:00











你知道得太多了

回复 支持 反对

使用道具 举报

Lv1.梦旅人

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

使用道具 举报

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
8
 楼主| 发表于 2010-9-5 22:02:02 | 只看该作者
回复 六祈 的帖子

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

点评

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

使用道具 举报

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
回复 支持 反对

使用道具 举报

Lv4.逐梦者

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

贵宾

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











你知道得太多了

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 15:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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