diff --git a/smack-core/src/main/java/org/jivesoftware/smack/util/StringUtils.java b/smack-core/src/main/java/org/jivesoftware/smack/util/StringUtils.java index b2873ac59..26b7d4bee 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/util/StringUtils.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/util/StringUtils.java @@ -23,6 +23,7 @@ import java.nio.charset.StandardCharsets; import java.util.Collection; import java.util.Iterator; import java.util.Random; +import java.util.regex.Pattern; /** * A collection of utility methods for String objects. @@ -541,4 +542,10 @@ public class StringUtils { } return cs.toString(); } + + private static final Pattern XMLWHITESPACE = Pattern.compile("[\t\n\r ]"); + + public static String deleteXmlWhitespace(String string) { + return XMLWHITESPACE.matcher(string).replaceAll(""); + } } diff --git a/smack-core/src/test/java/org/jivesoftware/smack/util/StringUtilsTest.java b/smack-core/src/test/java/org/jivesoftware/smack/util/StringUtilsTest.java index 226cb07b0..e61b655fe 100644 --- a/smack-core/src/test/java/org/jivesoftware/smack/util/StringUtilsTest.java +++ b/smack-core/src/test/java/org/jivesoftware/smack/util/StringUtilsTest.java @@ -109,4 +109,16 @@ public class StringUtilsTest { String result = StringUtils.randomString(0); assertEquals("", result); } + + @Test + public void testeDeleteXmlWhitespace() { + String noWhitespace = StringUtils.deleteXmlWhitespace(" foo\nbar "); + assertEquals("foobar", noWhitespace); + + noWhitespace = StringUtils.deleteXmlWhitespace(" \tbaz\rbarz\t "); + assertEquals("bazbarz", noWhitespace); + + noWhitespace = StringUtils.deleteXmlWhitespace("SNAFU"); + assertEquals("SNAFU", noWhitespace); + } }