Split text on right most space before limit is reached
Use to split text on several lines in receiving document, eg edifact LIN-IMD-C273 has several 7008 text element
// -----------------------------
// Peter Lykkegaard, 22 mar 2019
// -----------------------------
// Split long note on right most space before limit is reached
// TODO! Check parameters if they are of valid type/content
//
// Name: splitNoteBySpace
// Description: Method to split a given string by latest space before length limit
// Parameters
// input$, alphanumerical / String which needs to be split
// max$, alphanumerical / Max characters on each line
// Output, alphanumeric / array / Array of strings to return
local lvOutput$[];
#importJavaStart
import java.util.regex.Matcher;
import java.util.regex.Pattern;
#importJavaEnd
#javastart
String input = _StrVar_PINPUT.getString();
int max = (int)_NumVar_PMAX.getNum();
int len = input.length();
String regex = "(.{1," + max + "})(?:\\s|$)";
Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
Matcher matcher = pattern.matcher(input);
_StrVar_LVOUTPUT.getJuVar(0, 2).setString(input);
if (len > max)
{
int idx = 0; // Entries in output
while (matcher.find()) {
for (int i = 1; i <= matcher.groupCount(); i++) {
_StrVar_LVOUTPUT.getJuVar(idx, 2).setString(matcher.group(i).toString());
}
idx++;
}
}
#javaEnd
exitProc(lvOutput$);