2012-10-22 36 views
2

下面是我用來從RubyString轉換爲Java字符的代碼..你能否建議我更好的方式在哪裏Jruby(自動處理這些類型錯誤或jruby中的一些代碼來轉換)Jruby-將RubyString轉換爲Java字符

ruby_string="Raj" 

java.lang.String.new(col_value) 
col_value=str_obj.charAt(0) 
+0

你只是想獲得ruby_string的第一個字符?你想要做什麼的更廣泛的目的是什麼? – echristopherson

+0

不,我試圖將上面的ruby_string(ruby_string)轉換爲Java字符來調用接受java char作爲參數的java方法 – RajKamal

回答

6

首先,JRuby的行爲有點不同,具體取決於您是以1.8模式還是1.9模式運行它。在JRuby 1.7.0及更高版本中,默認值爲1.9;與其他人一樣,1.8是默認值。要更改默認值,您可以在命令行上將--1.8--1.9傳遞給jruby

在1.8模式下,字符串的某些操作(如在單個索引處獲取字符)返回數字(Fixnum s),而在1.9模式下,它們總是返回字符串。 JRuby會自動在0到65535之間的Ruby Fixnum和Java char之間進行轉換,因此您可以將1.8模式的「字符」值直接傳遞給接受字符的Java方法;例如

str = 'foo' 
java_obj.methodThatTakesAChar(str[0]) 

在1.9模式下,因爲str[0]是一個單字符字符串,你要它字符轉換爲數字。你用ord實例方法做到這一點:

str = 'foo' 
java_obj.methodThatTakesAChar(str[0].ord) 

我希望有幫助。

+2

不要忘了單擊複選標記。謝謝。 – echristopherson

+0

真的很有幫助。謝謝! –