日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

空格和空格不一样

發(fā)布時(shí)間:2025/4/16 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 空格和空格不一样 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

起因

public static String formatMoneyWithFractionNoSign(double d) {NumberFormat fmter = DecimalFormat.getCurrencyInstance(Locale.CHINA);return fmter.format(d).substring(1);}

在安卓5.0之前的系統(tǒng)都能得到有小數(shù)點(diǎn)無(wú)符號(hào)的字符串,形如“5.21”;但是在5.0.1系統(tǒng)的手機(jī)上得到了“ 5.21”,多了一個(gè)空格導(dǎo)致后續(xù)處理出現(xiàn)異常。當(dāng)我用trim()函數(shù)切掉空格的時(shí)候,莫名其妙地?zé)o效了……

分析

  • 調(diào)試看下fmter.format(d)的值是“¥ 2.15”。這里的空格對(duì)應(yīng)160。
  • 用 "¥ 2.15".substring(1).trim(); 調(diào)試一下,得到這個(gè) 。這里的空格對(duì)應(yīng)32。
  • 前一種的空格trim不掉,后者的可以。
  • trim()的源代碼
  • public String trim() {int start = offset, last = offset + count - 1;int end = last;while ((start <= end) && (value[start] <= ' ')) {start++;}while ((end >= start) && (value[end] <= ' ')) {end--;}if (start == offset && end == last) {return this;}return new String(start, end - start + 1, value);}

    trim()是把字符串的字符分別從兩段跟空格對(duì)比,將字符串兩端的符合條件的字符過(guò)濾掉。而這里的“空格”字符對(duì)應(yīng)的整數(shù)是32。所以160對(duì)應(yīng)的空格處理不了。

    結(jié)論

    查看Unicode 碼表知道,除了前32個(gè)字符外,還有一些“非打印”字符,而在 Android 5.0.1 環(huán)境中得到的那個(gè)空格恰好是大于32的空格。

    轉(zhuǎn)載于:https://www.cnblogs.com/shang1jk/p/4423109.html

    總結(jié)

    以上是生活随笔為你收集整理的空格和空格不一样的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。