Функция Split

Обсуждение Stimulsoft Reports.Java
Ответить
Golland
Сообщения: 77
Зарегистрирован: 03 окт 2012, 13:03

Функция Split

Сообщение Golland » 27 окт 2017, 17:43

Добрый день! Подскажите пож. появилась ли функция split, позволяющая из строки, в которой значения разделены определенным символом, вытачщить по заданному номеру нужное значение? Если нет, то скажите:
1. Планируется ли разработка подобной функции?
2. Можно ли ее как-то заменить существующими средствами?
Спасибо.
Aleksey
Сообщения: 2017
Зарегистрирован: 22 апр 2010, 02:57

Re: Функция Split

Сообщение Aleksey » 30 окт 2017, 05:52

Здравствуйте,

К сожалению, в Java версии функция Split() не поддерживается.
Как вариант, реализовать свою функцию деления строк.

Спасибо.
Golland
Сообщения: 77
Зарегистрирован: 03 окт 2012, 13:03

Re: Функция Split

Сообщение Golland » 31 окт 2017, 07:31

Добрый день! Нужно немого больше информации относительно "Как вариант, реализовать свою функцию деления строк." Имеось в виду использование встроенных функций типа Replace? Или же написание функции на Java и интегрирование в генератор отчетов ии исходный код? Если Вы имели в виду второй вариант, поясните пож. каким образом, еси можно с примерами. Спасибо.
Aleksey
Сообщения: 2017
Зарегистрирован: 22 апр 2010, 02:57

Re: Функция Split

Сообщение Aleksey » 31 окт 2017, 20:10

Здравствуйте,

Пример добавления своей функции в Java вы можете найти по следующей ссылке:
https://www.stimulsoft.com/en/documenta ... totals.htm

Спасибо.
Golland
Сообщения: 77
Зарегистрирован: 03 окт 2012, 13:03

Re: Функция Split

Сообщение Golland » 07 ноя 2017, 17:19

Добрый день! Не получается использовать пример:

public class MyRenderReportAction extends StiRenderReportAction {

@Override
public StiReport render(StiReport report) throws IOException, StiException {
report.getCustomFunctions().add(new StiCustomFunction() {
public Object invoke(List<Object> args) {
return ((String) args.get(0)).substring((Integer) args.get(1),
(Integer) args.get(2));
}

@SuppressWarnings({ "rawtypes", "unchecked" })
public List<Class> getParametersList() {
return new ArrayList<Class>(Arrays.asList(String.class, Integer.class,
Integer.class));
}

public String getFunctionName() {
return "subStr";
}
});
return super.render(report);
}

При вызове функции subStr с помощью синтаксиса {subStr("abcdef",2,1)} выдается ошибка

Nov 07, 2017 7:13:05 PM com.stimulsoft.base.utils.StiLoggingUtil showWarning
WARNING: Error: argList= abcdef 2 1, objName=CustomFunction, customFunctionName=subStr
Custom function: subStr with parameters [java.lang.String java.lang.Long java.lang.Long] not found in report custom functions list
com.stimulsoft.report.engine.parser.StiCallFunction.invokeCustomFunction(StiCallFunction.java:1705)
com.stimulsoft.report.engine.parser.StiCallFunction.callFunc(StiCallFunction.java:1566)
com.stimulsoft.report.engine.parser.StiParser.callFunc(StiParser.java:1872)
com.stimulsoft.report.engine.parser.StiParser.executeAsm(StiParser.java:1658)
com.stimulsoft.report.engine.parser.StiParser.ParseTextValue(StiParser.java:2549)
com.stimulsoft.report.components.simplecomponents.StiSimpleText.InvokeGetValue(StiSimpleText.java:1385)
com.stimulsoft.report.engine.engineV2.builders.StiSimpleTextV2Builder.InternalRender(StiSimpleTextV2Builder.java:103)
com.stimulsoft.report.components.StiComponent.InternalRender(StiComponent.java:4357)
com.stimulsoft.report.engine.engineV2.builders.StiComponentV2Builder.Render(StiComponentV2Builder.java:154)
com.stimulsoft.report.components.StiComponent.render(StiComponent.java:4363)


Что делается некорректно? Спасибо.
Vadim
Сообщения: 100
Зарегистрирован: 04 апр 2013, 08:26

Re: Функция Split

Сообщение Vadim » 09 ноя 2017, 09:17

Здравствуйте.
Используйте

Код: Выделить всё

public List<Class> getParametersList() {
return new ArrayList<Class>(Arrays.asList(String.class, Long.class,
Long.class));
}
Ответить