我可以使用哪些字符来引用这个 ruby 字符串?
我将 JRuby 嵌入到 Java 中,因为我需要使用 Java 字符串作为参数来调用一些 Ruby 方法。 问题是,我正在调用这样的方法:
String text = ""; // this can span over multiple lines, and will contain ruby code
Ruby ruby = Ruby.newInstance();
RubyRuntimeAdapter adapter = JavaEmbedUtils.newRuntimeAdapter();
String rubyCode = "require \"myscript\"\n" +
"str = build_string(%q~"+text+"~)\n"+
"str";
IRubyObject object = adapter.eval(ruby, codeFormat);
问题是,我不知道可以使用哪些字符串作为分隔符,因为如果我发送到 build_string 的 ruby 代码将包含 ruby 代码。 正确知道我正在使用〜,但我认为这可能会破坏我的代码。 我可以使用哪些字符作为分隔符来确保我的代码无论 ruby 代码是什么都可以工作?
I'm embedding JRuby in Java, because I need to call some Ruby methods with Java strings as arguments. The thing is, I'm calling the methods like this:
String text = ""; // this can span over multiple lines, and will contain ruby code
Ruby ruby = Ruby.newInstance();
RubyRuntimeAdapter adapter = JavaEmbedUtils.newRuntimeAdapter();
String rubyCode = "require \"myscript\"\n" +
"str = build_string(%q~"+text+"~)\n"+
"str";
IRubyObject object = adapter.eval(ruby, codeFormat);
The thing is, I don't know what strings I can use as delimiters, because if the ruby code I'm sending to build_string will contain ruby code. Right know I'm using ~,but I think this could break my code. What characters can I use as delimiters to make sure my code will work no matter what the ruby code is?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用heredoc格式:
但是,这假设您在输入中的单独行上不会有“THISSHOULDNTBE”。
use the heredoc format:
this however assumes you won't have "THISSHOULDNTBE" on a separate line in the input.
由于字符串文本包含任何字符,因此没有剩余字符可用于像您现在使用的 ~ 那样的引号转义。 您仍然需要转义 java 中字符串文本中的波浪号并将其附加到您正在构建的字符串中。
像这样的东西(未经测试,不是 Java 大师):
Since string text contain contain any character, there is no character left to use for quotation escaping like the ~ you're using now. You would still need to escape the tilde in string text in java and append that one to the string you're building.
Something like (untested, not a Java guru):