Make 3 character short names from long name when long name is only one word

1.2-legacy
Gunter Tim 2020-09-17 00:37:51 -07:00
rodzic b98a8ea34b
commit f413bea618
1 zmienionych plików z 14 dodań i 4 usunięć

Wyświetl plik

@ -17,12 +17,22 @@ import com.geeksville.mesh.MyNodeInfo
import com.geeksville.mesh.service.MeshService
/// Given a human name, strip out the first letter of the first three words and return that as the initials for
/// that user.
/// that user. If the original name is only one word, strip vowels from the original name and if the result is
/// 3 or more characters, use the first three characters. If not, just take the first 3 characters of the
/// original name.
fun getInitials(name: String): String {
val words = name.split(Regex("\\s+")).filter { it.isNotEmpty() }.take(3).map { it.first() }
.joinToString("")
val nchars = 3
val minchars = 2
val words = name.split(Regex("\\s+")).filter { it.isNotEmpty() }
return words
val initials = when (words.size) {
in 0..minchars-1 -> {
val nm = name.filterNot { c -> c.toLowerCase() in "aeiou" }
if (nm.length >= nchars) nm else name
}
else -> words.map{ it.first() }.joinToString("")
}
return initials.take(nchars)
}
class UIViewModel(app: Application) : AndroidViewModel(app), Logging {