summaryrefslogtreecommitdiffstats
path: root/indexinglanguage/src/main
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-09-15 11:30:12 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2023-09-15 11:36:08 +0200
commit4875240fd78357fafa8ea25a14a67298333506ca (patch)
treec743ac2d8e744e539533081775219d670c8fcfcf /indexinglanguage/src/main
parent15a597984592cef5fab77c9a72a3b04a356a4943 (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.java12
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