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

Project1

 找回密码
 注册会员
搜索
楼主: taroxd
打印 上一主题 下一主题

[讨论] 如何匹配字符串中的成对括号?

[复制链接]

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2207
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

11
 楼主| 发表于 2014-6-20 19:42:28 | 只看该作者
本帖最后由 taroxd 于 2014-6-20 19:47 编辑
余烬之中 发表于 2014-6-20 19:37
只需要最外层?直接贪婪不久好了?

或者是这样:"文字#{待处理内容}文字#{另一些待处理内容}"


不是。我需要的是成对括号的最外层

当我们用双引号字符串 "#{}1}" 的时候,结果显然是 "1}" 而不是 "}1"
而 "#{{}"则会直接报错

举这个例子你明白了吗?
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

百合控

梦石
0
星屑
6438
在线时间
1274 小时
注册时间
2013-8-21
帖子
3657

开拓者

12
发表于 2014-6-20 19:51:26 | 只看该作者
taroxd 发表于 2014-6-20 19:42
不是。我需要的是成对括号的最外层

当我们用双引号字符串 "#{}1}" 的时候,结果显然是 "1}" 而不是 "}1" ...

这样?
  "#{待处理}文本}"
  我们需要获得待处理进行处理 然后连接文本

这样我不建议不区分不同功能的括号的书面写法

当然 我打算写的和具体使用的有差别 只针对【匹配字符串中的成对括号,并且筛选内容】
萌新瑟瑟发抖
看到我请叫我去干活
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2207
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

13
 楼主| 发表于 2014-6-20 19:53:21 | 只看该作者
余烬之中 发表于 2014-6-20 19:51
这样?
  "#{待处理}文本}"
  我们需要获得待处理进行处理 然后连接文本

就是要这个效果,我在代码中实现的也就是这个效果

有时待处理可能会含有大括号,就像字符串中有时也会遇到双引号一样
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

百合控

梦石
0
星屑
6438
在线时间
1274 小时
注册时间
2013-8-21
帖子
3657

开拓者

14
发表于 2014-6-20 20:01:29 | 只看该作者
taroxd 发表于 2014-6-20 19:53
就是要这个效果,我在代码中实现的也就是这个效果

有时待处理可能会含有大括号,就像字符串中有时也会遇 ...

有时待处理可能会含有大括号
可是这样的话 如何区分呢?
情景A
  "#{待}处{理}文本}"
情景B
  "#{待处理}文{}本}"

要如何区分大括号到底是不是待处理的内容
(直接不匹配?)
萌新瑟瑟发抖
看到我请叫我去干活
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2207
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

15
 楼主| 发表于 2014-6-20 20:10:30 | 只看该作者
余烬之中 发表于 2014-6-20 20:01
有时待处理可能会含有大括号
可是这样的话 如何区分呢?
情景A


情景A
  "#{}处{理}文本}"
情景B
  "#{待处理}文{}本}"

你直接拿Ruby试一下就好了

点评

不过要是代码中有引号括起来的单个花括号,那真的得语法分析了……  发表于 2014-6-20 20:28
区分方式:代码中的花括号必定成对  发表于 2014-6-20 20:23
但是实在不够美观简洁啊  发表于 2014-6-20 20:22
比如说 #{$game_party.members.inject(0) {|sum, actor| sum + actor.hp }} 顶楼的代码可以做到区分  发表于 2014-6-20 20:20
不是说【有时待处理可能会含有大括号】吗 你打算怎么区分  发表于 2014-6-20 20:17
回复 支持 反对

使用道具 举报

Lv2.观梦者

无节操

梦石
0
星屑
607
在线时间
795 小时
注册时间
2009-2-6
帖子
3939

开拓者贵宾

16
发表于 2014-6-20 20:58:32 | 只看该作者
我就想知道你们怎么做到 "#{吧唧吧唧}" 而不报错的……正常来说不是直接说没这变量吗。
Brandnew day, Brandnew Life
                              实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2207
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

17
 楼主| 发表于 2014-6-20 21:03:21 | 只看该作者
本帖最后由 taroxd 于 2014-6-20 21:06 编辑
moy 发表于 2014-6-20 20:58
我就想知道你们怎么做到 "#{吧唧吧唧}" 而不报错的……正常来说不是直接说没这变量吗。 ...


不懂你在说什么

我只知道有了这货我可以做许多死,比如道具的描述随队伍而变化,比如在显示文字里面直插某个计算出的数值之类的

https://rpg.blue/thread-365976-1-1.html 这里可是有各种奇怪的功能的

写个啥 #{S[3] ? 1 : 2} 之类的多简洁清晰~~~
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

百合控

梦石
0
星屑
6438
在线时间
1274 小时
注册时间
2013-8-21
帖子
3657

开拓者

18
发表于 2014-6-20 21:05:30 | 只看该作者
本帖最后由 余烬之中 于 2014-6-20 21:29 编辑

就这样 完成了一个方法
方法不能直接使用 满足你的适用范围的话 必须先处理字符串 将不需要处理的括号转义 匹配后再转回
正准备发给你的时候发现只能处理单字节字符 不过现在已经可以处理双字节字符了
方法说明
嘿!代码!
萌新瑟瑟发抖
看到我请叫我去干活
回复 支持 反对

使用道具 举报

Lv2.观梦者

无节操

梦石
0
星屑
607
在线时间
795 小时
注册时间
2009-2-6
帖子
3939

开拓者贵宾

19
发表于 2014-6-20 21:07:37 | 只看该作者
taroxd 发表于 2014-6-20 21:03
不懂你在说什么

我只知道有了这货我可以做许多死,比如道具的描述随队伍而变化,比如在显示文字里面直插 ...
  1. a = "#{xyz}"
  2. #=> no methods or variables name“xyz”
复制代码
……我也没弄明白

点评

moy
……我看你们写的我迷惑了半天(  发表于 2014-6-20 21:24
其实我想说……"#{xyz}"不写在脚本里 脚本里要处理一下 不能直接转义了 例如"#插一下{xyz}" 要处理这个字面值  发表于 2014-6-20 21:22
Brandnew day, Brandnew Life
                              实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2207
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

20
 楼主| 发表于 2014-6-20 21:10:50 | 只看该作者
moy 发表于 2014-6-20 21:07
……我也没弄明白

https://rpg.blue/thread-365976-1-1.html
最上端的脚本提供了 V, S, A 之类“常量”的定义

实在不行还能读取全局变量的嘛~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-27 08:58

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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