Android如何正确的截取字符串/emoji子串.

这是一个简单的不能再简单的问题,然而,就是这样简单的常见问题,往往会被忽视,从而给未来的某一天埋坑。

大多数编程语言都提供了built-in 截取字符串的方法。

比如 Python最为简单直观,比如从”Hello, World!” 中提取出 World 可以通过下标直接获取

text = "Hello, World!"
substring = text[7:12]
print(substring) #print World

 在 JS 中,String 也提供

text = "Hello, World!"
substring = text.substring(7,12)
print(substring) //print 'World'

在 Android 中,Kotlin 和 Java 的 String 同样有类似的方法:

val text = "Hello, World!"
val substring = text.substring(7,12)
print(substring) //print 'World'

相信你也一定写过上面的代码,但是真的会如你的预期得到想要的结果吗?

一个字符串的下标,到底表示的是什么?

Continue reading “Android如何正确的截取字符串/emoji子串.”

Kotlin 中遍历List的N种方式

最近开发使用Kotlin确实挺爽的,就在于这门语言足够现代化,和JetBrains家的编辑器结合起来更是无敌了,自动提示,编译优化都是很实用的,但这样基本也脱离不了这个生态了,话说今天使用List的遍历,居然有六种方式,使用哪种方式都可以。这样虽然看起来很庞大,看起来很难记的样子,但是好在编译器+idea足够聪明,记住一两种就OK了。这有点像是我们学习英语,随着对语义的更加紧准的表达,英文单词拓展到了十几二十万个。(方便的同时也会加大人们的记忆负担)

方式0

    brandList.forEach {
        println(it)
    }

方式1

    for (brand in brandList) {
        println(brand)
    }

方式2

  for (index in 0 until brandList.size) {
        println("$index:${brandList[index]}")
    }

方式3

    for (index in 0..brandList.lastIndex) {
        println("$index:${brandList[index]}")
    }

方式4

    for (index in brandList.indices) {
        println("$index:${brandList[index]}")
    }

方式5

    brandList.forEachIndexed { index, brand ->
        println("$index:${brand}")
    }

android控制软键盘弹出或者隐藏

在程序中加入以下代码时,软键盘会出现:

InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.RESULT_SHOWN);

如果要让软键盘消失,则为以下代码:

InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);