Skip to content

Commit 65a91ae

Browse files
committed
Add a new utility method for trimming strings
1 parent 45a1af3 commit 65a91ae

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

server/src/main/java/org/elasticsearch/common/Strings.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,24 @@ public static String trimLeadingCharacter(String str, char leadingCharacter) {
172172
return str.substring(i);
173173
}
174174

175+
/**
176+
* Trim all occurrences of the supplied trailing character from the given String.
177+
*
178+
* @param str the String to check
179+
* @param trailingCharacter the trailing character to be trimmed
180+
* @return the trimmed String
181+
*/
182+
public static String trimTrailingCharacter(String str, char trailingCharacter) {
183+
if (hasLength(str) == false) {
184+
return str;
185+
}
186+
int i = str.length();
187+
while (i > 0 && str.charAt(i - 1) == trailingCharacter) {
188+
i--;
189+
}
190+
return str.substring(0, i);
191+
}
192+
175193
/**
176194
* Test whether the given string matches the given substring
177195
* at the given index.

server/src/test/java/org/elasticsearch/common/StringsTests.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import static org.elasticsearch.common.Strings.toLowercaseAscii;
3636
import static org.elasticsearch.common.Strings.tokenizeByCommaToSet;
3737
import static org.elasticsearch.common.Strings.trimLeadingCharacter;
38+
import static org.elasticsearch.common.Strings.trimTrailingCharacter;
3839
import static org.hamcrest.Matchers.arrayContaining;
3940
import static org.hamcrest.Matchers.containsString;
4041
import static org.hamcrest.Matchers.emptyArray;
@@ -121,6 +122,14 @@ public void testTrimLeadingCharacter() {
121122
assertThat(trimLeadingCharacter("aaa", 'a'), equalTo(""));
122123
}
123124

125+
public void testTrimTrailingCharacter() {
126+
assertThat(trimTrailingCharacter(null, 'g'), equalTo(null));
127+
assertThat(trimTrailingCharacter("", 'g'), equalTo(""));
128+
assertThat(trimTrailingCharacter("abcdef", 'g'), equalTo("abcdef"));
129+
assertThat(trimTrailingCharacter("abcdefggg", 'g'), equalTo("abcdef"));
130+
assertThat(trimTrailingCharacter("aaa", 'a'), equalTo(""));
131+
}
132+
124133
public void testToStringToXContent() {
125134
final ToXContent toXContent;
126135
final boolean error;

0 commit comments

Comments
 (0)