- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在制作一个应用程序,可以将角色扮演风格的消息翻译成更通用的内容。用户可以指定他们的偏好,例如:
Moves
- /me <move>
- *<move>*
Speech
- <speech>
- "<speech>"
Out-of-Character
- [<ooc>]
- ((ooc))
- //ooc
我需要像这样解析一条消息:
/me eats food "This is *munch* good!" [You're good at this]
或者像这样:
*eats food* This is *munch* good! ((You're good at this))
变成一个更通用的、类似 XML 的字符串,如下所示:
<move>eats food <speech>This is <move>munch</move> good!</speech> <ooc>You're good at this</ooc></move>
但关于哪个在哪个里面。例如:
*eats food "This is munch* good" // You're good at this
应该解析为:
<move>eats food "This is munch</move><speech> good" </speech><ooc> You're good at this</ooc>
即使这不是用户的意图。请注意,最后一个示例中的引号未被解析,因为它们没有包装完整的片段,并且当前移动片段在遇到第一个时尚未完成,而在第二个出现时语音已经开始,并且第二个在它之后没有另一个围绕一个单独的语音段。
我已经尝试过使用树甚至正则表达式以迭代方式、递归方式执行此操作,但我还没有找到一种可以像我想要的那样工作的解决方案。 如何将上述 RP 样式消息解析为上述通用 XML 样式消息?
保留间距也很重要。
以下是使用上面列出的首选项的一些其他示例:
I like roller coasters.
[what are you like?]
/me eats a hamburger // wanna grab lunch after this?
*jumps up and down* This ((the party)) is great!
/me performs *an action* within an action "And that's just fine [As is *an action* in ooc in speech]"
And messages /me can change contexts // at any point
[But ill-formatted ones *must be parsed] according "to* the rules"
-And text formatted in <non-specified ways> is ¬ treated; specially-
成为:
<speech>I like roller coasters.</speech>
<ooc>what are you like?</ooc>
<move>eats a hamburger <ooc> wanna grab lunch after this?</ooc></move>
<move>jumps up and down</move><speech> This <ooc>the party</ooc> is great!</speech>
<move>performs <move>an action</move> within an action <speech>And that's just fine <ooc>As is <move>an action</move> in ooc in speech</ooc></speech></move>
<speech>And messages <move>can change contexts <ooc> at any point</ooc></move></speech>
<ooc>But ill-formatted ones *must be parsed</ooc><speech> according <speech>to* the rules</speech></speech>
<speech>-And text formatted in <non-specified ways> is &not treated; specially-</speech>
最佳答案
您拥有的是一堆应该触发 xml 标记的标记。为每个标签使用一个函数来实现这一点相当简单。
void move(){
xmlPrintWriter.println("<move>");
parse();
xmlPrintWriter.println(content);
xmlPrintWriter.println("</move>");
}
parse() 对输入文本进行消费和分类的地方。
void parse(){
if (text.startsWith("*")) action = MOVE;
... other cases
if ( action == MOVE){
move();
}
... other actions.
解析方法必须检查所有可能的状态改变器“*” -> 移动,“((” -> ooc,“”” -> 语音等等。
MOVE 是一个类常量,action 是一个状态变量,还有 text 和 xmlPrintWriter。 move 和parse 都是方法
如果您允许最后一个示例,则此方法将不起作用。然后情况变得非常棘手,需要根据具体情况来决定。
关于algorithm - 我怎样才能将这个明文 RP 风格的字符串解析成一个更通用的 XML 风格的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29803206/
好的,这是有关如何将证书与 Key Vault 一起使用的博客文章 - https://blogs.msdn.microsoft.com/appserviceteam/2016/05/24/deplo
在我的 servlet 中,我正在创建一个多维数组,我试图在 JSP 中使用它来检查某些内容。这是我在 servlet 中的设置: List> tableList = new Arra
我正在使用规范“https://openid.net/specs/openid-connect-session-1_0.html#RPLogout” ' 为了实现该功能,RP 发起注销。我需要知道的是
我有一张使用 Crystal Reports 制作的收据,其中页面宽度为 4 英寸,高度应该是动态的。我将高度设置为 2 英寸,因为我不知道如何使其动态化。打印机是 TVS RP-45 Justbil
在 erlang shell 中,您可以使用 rp 避免麻烦的术语截断。 .在 Elixir 中最惯用的方法是什么? 最佳答案 我相信等价的会通过 limit: :infinity至 Kernel.i
单点登录似乎适用于我的应用程序和许多共享 STS 的其他网站。当我退出我的应用程序时,我似乎正确地退出了我的站点;但是,我仍然可以访问使用相同 STS 的其他应用程序,而无需再次登录。谁能告诉我我错过
我需要5个wav文件才能在程序结尾随机播放。我知道如何播放一首歌,而且我已经在该站点上找到了一个代码,但是它对我不起作用,每次都播放同一首歌。这是代码: Public Sub PlayRand
在阅读了 MSDN 文章 (http://msdn.microsoft.com/en-us/magazine/2009.01.genevests.aspx) 之后,我对使用 Microsoft Gen
嘿伙计们,非常感谢你花时间看我的问题,我已经在这段代码上工作了大约 1 周(我是编码新手,也是 python 1 周)目前只有 x in xrange 时循环才有效(x) 和 'rp':'x' 是此
我无法让 DNOA RP 在 SSL 设备后面工作(终止客户端 HTTPS 连接并将 HTTP 反向代理到它后面的网络服务器)。 问题是 RP 错误地从传入请求中猜测接收端点(因为它到达网络服务器时不
我正在制作一个应用程序,可以将角色扮演风格的消息翻译成更通用的内容。用户可以指定他们的偏好,例如: Moves - /me - ** Speech - - "" Out-of-Charac
我正在将所有 DNS 服务迁移到 Azure DNS。我还剩下一个 DNS 区域。它有 2 条记录,我无法在 Azure DNS 上创建 - 这些选项不存在。 这是一个负责人 (RP) 记录和一个邮箱
我不明白 1 部分。 例如,我有一个网站 asdf.com 并使用 google OP,所以我有一个带有链接的 login with google 按钮(类似于 https://account.goo
我不明白 1 部分。 例如,我有一个网站 asdf.com 并使用 google OP,所以我有一个带有链接的 login with google 按钮(类似于 https://account.goo
我正在尝试查找 RP(中继方)和 OP(OpenID 提供者)是否可以在同一域中。我们有一个在未来实现内部 SSO 的用例,并被要求为每个客户端在同一域上实现授权。 我们共有 3 个域,要求为每个域实
**我有下面的代码,我想在js中将货币格式从($)更改为(Rp.)。我已经厌倦了这个,有人可以帮助我吗? function update_total() { var total = 0; $(
这里有很多问题,有人想在 iframe 中加载 OpenID 提供者的登录页面,而不是重定向并让提供者控制登录页面的整个外观。出于非常可靠的安全原因(主要是反网络钓鱼),这是一个很大的禁忌,被禁止,并
场景 一个非常简单的日期范围选择器实例: date-range-picker (function(){ $('#drp').dat
我目前正在研究一个解决方案,该解决方案使用 STS、客户端和客户端使用的 WCF 服务。目前,这一切都是通过配置完成的,客户端成功检索 token 并将其传递给 WCF 服务。 问题出现在证书上,我们
我们在荷兰运营着一个大型在线社区。因此,我们向成员(member)的 hotmail 电子邮件地址发送了大量邮件。最近我们注意到并不是所有的邮件都能到达我们的成员(member),因为我们似乎达到了某
我是一名优秀的程序员,十分优秀!