2022-08-23

Android适配IOS的换行符

当你遇到使用ios发布动态或者其他带换行符的文案在安卓上却没有换行的问题,使用下面代码就行了

ios换行的Unicode为\ud 安卓为\ua,实现思路就是把ios的文案转化为unicode把\ud替换为\ua,然后再把unicode转化为普通文本
    /**
     * 适配ios的换行符
     */
    fun translate(et: TextView): String {
        val str = et.text.toString()
        val unicode = UnicodeUtil.string2Unicode(str)
        val newUnicode = unicode.replace("\\ud", "\\ua")
        val newStr = UnicodeUtil.unicode2String(newUnicode)
        et.text = newStr
        return newStr
    }
    /**
     * 字符串转换unicode
     *
     * @param string
     * @return
     */
    fun string2Unicode(string: String): String {
        val unicode = StringBuffer()
        for (i in 0 until string.length) {
            // 取出每一个字符
            val c = string[i]
            // 转换为unicode
            unicode.append("\\u" + Integer.toHexString(c.toInt()))
        }

        return unicode.toString()
    }
    /**
     * unicode 转字符串
     *
     * @param unicode 全为 Unicode 的字符串
     * @return
     */
    fun unicode2String(unicode: String): String {
        val string = StringBuffer()
        val hex = unicode.split("\\\\u".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()

        for (i in 1 until hex.size) {
            // 转换出每一个代码点
            val data = Integer.parseInt(hex[i], 16)
            // 追加成string
            string.append(data.toChar())
        }

        return string.toString()
    }

你可能感兴趣的:(2022-08-23)