Сплит Java-строки в Rhino

Я пытаюсь разбить строку Java в программе Rhino Javascript

var s = new java.lang.String("1 2 3");
s.split();

которые дают мне ошибку

js: не удается найти метод java.lang.String.split().

Документы Rhino упоминали, что все методы javascript String.prototype (такие как match, split и т. Д.) Доступны в строке java, если они еще не предоставлены java.lang.String. Есть идеи о том, что здесь происходит?

5 ответов

Решение

Посмотрите на документы Java: http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html

Кажется, не является конструктором с 0 параметрами для метода split. Вы должны передать это регулярное выражение.

Кроме того, для дальнейшего пояснения, метод split возвращает строковый массив, это не метод void, как вы использовали его в своем примере кода.

split принимает аргумент, который является регулярным выражением, которое вы хотите использовать для разделения ваших токенов.

http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html

Rhino предоставляет только методы, которые java.lang.String отсутствует и split очевидно, не один из них.

Чтобы использовать реализацию JavaScript split Вам нужно будет преобразовать строку Java в JavaScript:

var s = String(new java.lang.String("1 2 3"));
// Also valid: var s = "" + new java.lang.String("1 2 3");
print(s.split()); // 1 2 3

Не совсем тот же контекст, но может кому-то помочь.

Я использую функцию JavaScript split() в Rhino.

Чтобы все заработало, я следую схеме:

var l_VAR = "" + some_function();
var l_VARs = l_VAR.split("%%");

Я предполагаю, что "" + заставляет Rhino использовать тип String в JavaScript.

Когда я забываю добавить "+", я получаю сообщение

TypeError: split is not a function.

Возможно, вы используете это неправильно.
Не требует ли разбиения строкового параметра?

Другие вопросы по тегам