diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-09-15 11:30:12 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2023-09-15 11:36:08 +0200 |
commit | 4875240fd78357fafa8ea25a14a67298333506ca (patch) | |
tree | c743ac2d8e744e539533081775219d670c8fcfcf /indexinglanguage/src/main | |
parent | 15a597984592cef5fab77c9a72a3b04a356a4943 (diff) |
- Add utility to do substring extraction by codepoints, instead of java char index.
- Test and use it in SubstringExpression in indeing language.
Diffstat (limited to 'indexinglanguage/src/main')
-rw-r--r-- | indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SubstringExpression.java | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SubstringExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SubstringExpression.java index 6f96a215edb..1f9a341519e 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SubstringExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/SubstringExpression.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.indexinglanguage.expressions; import com.yahoo.document.DataType; import com.yahoo.document.datatypes.StringFieldValue; +import com.yahoo.text.Text; /** * @author Simon Thoresen Hult @@ -32,15 +33,8 @@ public final class SubstringExpression extends Expression { @Override protected void doExecute(ExecutionContext context) { String input = String.valueOf(context.getValue()); - int len = input.length(); - if (from >= len) { - input = ""; - } else if (to >= len) { - input = input.substring(from); - } else { - input = input.substring(from, to); - } - context.setValue(new StringFieldValue(input)); + String substring = Text.substringByCodepoints(input, from, to); + context.setValue(new StringFieldValue(substring)); } @Override |