diff --git a/README.md b/README.md index 1c84da4..0a672b4 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,7 @@ dependencies { * SpannableString.bold(start: Int, end: Int) * SpannableString.underline(start: Int, end: Int) * SpannableString.italic(start: Int, end: Int) +* String.capitalizeWords(locale: Locale, delimiter: String) ## Boolean diff --git a/extension/src/main/java/com/mobven/extension/String.kt b/extension/src/main/java/com/mobven/extension/String.kt index e30e78e..6bfe4f2 100644 --- a/extension/src/main/java/com/mobven/extension/String.kt +++ b/extension/src/main/java/com/mobven/extension/String.kt @@ -5,6 +5,7 @@ import android.text.SpannableString import android.text.style.ForegroundColorSpan import android.text.style.StyleSpan import android.text.style.UnderlineSpan +import java.util.* /** * Extension method for change color of spannable string @@ -36,4 +37,17 @@ fun SpannableString.underline(start: Int, end: Int): SpannableString { fun SpannableString.italic(start: Int, end: Int): SpannableString { this.setSpan(StyleSpan(Typeface.ITALIC), start, end, 0) return this -} \ No newline at end of file +} + +/** + * Extension method for capitalize all of the words in a [String] + * @param locale is to determine language if word has a different character set from app + * @param delimiter is to determine delimiter for each word + * @sample "çay erdal bakkalda içilir".capitalizeWords(Locale.forLanguageTag("TR")) returns "Çay Erdal Bakkalda İçilir" + * @sample "çay-şeker".capitalizeWords(Locale.forLanguageTag("TR"), "-") returns "Çay-Şeker" + */ +fun String.capitalizeWords(locale: Locale = Locale.ROOT, delimiter: String = " "): String { + return split(delimiter).joinToString(delimiter) { + it.toLowerCase(locale).capitalize(locale) + } +}