Сплит 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.
Возможно, вы используете это неправильно.
Не требует ли разбиения строкового параметра?