Java/Android给字符串小数点后子串上色为何无法保留完整原字符串
问题原因
- 你在替换时错误将变量名
str作为固定字符串写在了替换模板中,没有把实际提取的小数部分内容拼入标签内,导致原小数部分被替换为字面量str,显示异常。 - 硬编码
substring(7)的截取逻辑不通用,若整数部分长度发生变化,会出现截取错误甚至下标越界问题。
解决方法
先定位小数点位置拆分整数、小数部分,再拼接带样式的字符串即可,示例代码如下:
String number = "123456.2585"; int dotPosition = number.indexOf('.'); if (dotPosition != -1) { // 保留整数部分+小数点 String integerPart = number.substring(0, dotPosition + 1); // 提取小数部分 String decimalPart = number.substring(dotPosition + 1); // 拼接带颜色样式的完整内容 String result = integerPart + "<font color='#EE0000'>" + decimalPart + "</font>"; // 安卓7.0及以上推荐使用FROM_HTML_MODE_LEGACY参数避免API废弃警告 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { editText2.setText(Html.fromHtml(result, Html.FROM_HTML_MODE_LEGACY)); } else { editText2.setText(Html.fromHtml(result)); } } else { // 无小数点时直接展示原内容 editText2.setText(number); }
该方案兼容任意长度的整数/小数部分,可稳定实现仅小数部分标红的效果。
内容的提问来源于stack exchange,提问作者Noudy Daher
相关产品推荐
相关产品推荐

