diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/platform/base/util/StringExtensions.kt b/app/src/main/java/com/x8bit/bitwarden/ui/platform/base/util/StringExtensions.kt index d037320a11..e7a0675624 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/platform/base/util/StringExtensions.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/platform/base/util/StringExtensions.kt @@ -12,6 +12,7 @@ import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.text.rememberTextMeasurer import androidx.core.graphics.toColorInt import java.net.URI +import java.text.Normalizer import java.util.Locale import kotlin.math.floor @@ -163,3 +164,16 @@ fun String.toHexColorRepresentation(): String { */ fun String.capitalize(locale: Locale = Locale.getDefault()): String = replaceFirstChar { if (it.isLowerCase()) it.titlecase(locale) else it.toString() } + +/** + * Normalizes the [String] by removing diacritics, such as an umlaut. + * + * Example: áéíóů --> aeiou + */ +fun String.removeDiacritics(): String = + "\\p{InCombiningDiacriticalMarks}+" + .toRegex() + .replace( + Normalizer.normalize(this, Normalizer.Form.NFKD), + "", + ) diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/platform/base/util/StringExtensionsTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/platform/base/util/StringExtensionsTest.kt index 45f6450fcf..3c45c6d441 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/platform/base/util/StringExtensionsTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/platform/base/util/StringExtensionsTest.kt @@ -98,4 +98,10 @@ class StringExtensionsTest { result, ) } + + @Test + fun `removeDiacritics should remove diacritics from the string`() { + val result = "áéíóů".removeDiacritics() + assertEquals("aeiou", result) + } }