Android `%d` 與 `1$%d` 格式化的區別

在這里插入圖片描述

在 Android 開發中,我們經常需要對字符串進行格式化處理,比如動態填充數字、日期、字符等。
其中,%d1$%d 都是格式化占位符,但它們在使用上有一些不同。
本文將詳細解析這兩者的區別,并結合 Kotlin 代碼示例幫助你理解。

1. %d1$%d 的基本概念

  • %d:表示整數占位符,按照傳入參數的順序依次填充。
  • 1$%d:表示帶索引的占位符,1$ 代表第一個參數,2$ 代表第二個,以此類推。

2. 代碼示例

我們直接用 Kotlin 代碼來演示兩者的區別。

fun main() {val format1 = "%d 年 %d 月 %d 日"val format2 = "%1$d 年 %2$d 月 %3$d 日"val year = 2025val month = 3val day = 11val result1 = String.format(format1, year, month, day)val result2 = String.format(format2, year, month, day)println("使用 %d 格式化: $result1")println("使用 1$%d 格式化: $result2")
}

輸出結果:

使用 %d 格式化: 2025 年 3 月 11 日
使用 1$%d 格式化: 2025 年 3 月 11 日

3. 區別解析

3.1 %d 的工作原理

  • 直接按照傳入的參數順序進行替換。
  • 如果參數順序變了,結果也會相應改變。

3.2 1$%d 的工作原理

  • 1$ 明確指定了參數的位置,即便參數順序變動,引用的仍然是指定位置的值。
  • 適用于多語言(國際化)情況,可以根據語言調整順序,而不用改變代碼。

4. 為什么需要 1$%d

在多語言(Localization)場景下,不同語言的語序可能不同,比如:

  • 中文:2025 年 3 月 11 日
  • 英語:March 11, 2025

如果我們只用 %d,就需要改動代碼傳參順序,而 1$%d 允許我們調整字符串資源中的格式,而無需改變代碼。

5. 在 Android 開發中的使用

在 Android 的 strings.xml 中,我們通常這樣定義格式化字符串:

<string name="date_format">%1$d 年 %2$d 月 %3$d 日</string>

然后在代碼中使用:

val formattedDate = context.getString(R.string.date_format, 2025, 3, 11)
println(formattedDate) // 2025 年 3 月 11 日

6. 總結

  • %d 適用于簡單的格式化,不涉及參數順序調整。
  • 1$%d 適用于國際化(i18n)等需要調整參數順序的場景。
  • 在 Android 開發中,推薦在 strings.xml 里使用 1$%d,確保不同語言的兼容性。

這樣在適配不同語言時,只需要修改 strings.xml,而不需要調整代碼的參數傳遞順序。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/73398.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/73398.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/73398.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringBoot中使用kaptcha生成驗證碼

簡介 kaptcha是谷歌開源的簡單實用的驗證碼生成工具。通過設置參數&#xff0c;可以自定義驗證碼大小、顏色、顯示的字符等等。 Maven引入依賴 <!-- https://mvnrepository.com/artifact/pro.fessional/kaptcha --><dependency><groupId>pro.fessional<…

如何在PHP中實現數據加密與解密:保護敏感信息

如何在PHP中實現數據加密與解密&#xff1a;保護敏感信息 在現代Web開發中&#xff0c;數據安全是一個至關重要的議題。無論是用戶的個人信息、支付數據&#xff0c;還是其他敏感信息&#xff0c;都需要在存儲和傳輸過程中進行加密&#xff0c;以防止數據泄露和惡意攻擊。PHP作…

單元測試、系統測試、集成測試、回歸測試的步驟、優點、缺點、注意點梳理說明

單元測試、系統測試、集成測試、回歸測試的梳理說明 單元測試 步驟&#xff1a; 編寫測試用例&#xff0c;覆蓋代碼的各個分支和邊界條件。使用測試框架&#xff08;如JUnit、NUnit&#xff09;執行測試。檢查測試結果&#xff0c;確保代碼按預期運行。修復發現的缺陷并重新測…

C++能力測試題

以下是一些C能力測試題&#xff0c;涵蓋了從基礎語法到高級特性的多個方面&#xff1a; 選擇題 1. 下面關于RTTI的說法&#xff0c;正確的是&#xff1f; A. 使用typeid前必須包含<type_info>頭文件。 B. typeid只能用于多態類型或表達式。 C. typeid可以用于不完整類型…

模擬類似 DeepSeek 的對話

以下是一個完整的 JavaScript 數據流式獲取實現方案&#xff0c;模擬類似 DeepSeek 的對話式逐段返回效果。包含前端實現、后端模擬和詳細注釋&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><titl…

【訓練細節解讀】文本智能混合分塊(Mixtures of Text Chunking,MoC)引領RAG進入多粒度感知智能分塊階段

RAG系統在處理復雜上下文時,傳統和語義分塊方法的局限性,文本分塊的質量限制了檢索到的內容,從而影響生成答案的準確性。盡管其他算法組件有所進步,但分塊策略中的增量缺陷仍可能在一定程度上降低整體系統性能。如何直接量化分塊質量?如何有效利用大型語言模型(LLMs)進行…

IMA+DeepSeekR1+本地知識庫撰寫NOIP2008普及組T3【傳球游戲】題解

目錄 一、提問詞 二、DeepSeekR1回復 題目描述 解題思路 實現代碼 代碼說明 三、說明 【IMADeepSeekR1本地知識庫】撰寫NOIP2008普及組復賽題解系列 1、IMADeepSeekR1本地知識庫撰寫NOIP2008普及組T1【ISBN 號碼】題解-CSDN博客 2、IMADeepSeekR1本地知識庫撰寫NOIP200…

Nginx正向代理HTTPS配置指南(僅供參考)

要使用Nginx作為正向代理訪問HTTPS網站&#xff0c;需通過CONNECT方法建立隧道。以下是操作詳細步驟&#xff1a; 1. 安裝Nginx及依賴模塊 需要模塊&#xff1a;ngx_http_proxy_connect_module&#xff08;支持CONNECT方法&#xff09;。 安裝方式&#xff1a;需重新編譯Nginx…

Python 實現機器學習的 房價預測回歸項目

項目目標&#xff1a; 基于房屋特征&#xff08;如房間數、地理位置等&#xff09;預測加州地區的房價中位數。 使用 Python 實現機器學習的 房價預測回歸項目&#xff08;使用 California Housing 數據集&#xff09; 環境準備 # 安裝必要庫&#xff08;若未安裝&#xff09…

聚力·突破·共贏|修飾組學服務聯盟正式成立,共啟協同發展新篇章

2025年3月13日&#xff0c;上海——由中科新生命、杭州微米生物、廣科安德、承啟生物、派森諾生物、胡珀生物等十余家行業標桿企業共同發起的“修飾組學服務聯盟”成立儀式在上海紫竹新興產業技術研究院隆重舉行。聯盟以“聚力突破共贏”為主題&#xff0c;致力于整合修飾組學全…

【Docker項目實戰】使用Docker部署serverMmon青蛇探針(詳細教程)

【Docker項目實戰】使用Docker部署serverMmon青蛇探針 一、serverMmon介紹1.1 serverMmon 簡介1.2 主要特點二、本次實踐規劃2.1 本地環境規劃2.2 本次實踐介紹三、本地環境檢查3.1 檢查Docker服務狀態3.2 檢查Docker版本3.3 檢查docker compose 版本四、下載serverMmon鏡像五、…

力扣刷題(數組篇)

日期類 #pragma once#include <iostream> #include <assert.h> using namespace std;class Date { public:// 構造會頻繁調用&#xff0c;所以直接放在類里面&#xff08;類里面的成員函數默認為內聯&#xff09;Date(int year 1, int month 1, int day 1)//構…

【通縮螺旋的深度解析與科技破局路徑】

通縮螺旋的深度解析與科技破局路徑 一、通縮螺旋的形成機制與惡性循環 通縮螺旋&#xff08;Deflationary Spiral&#xff09;是經濟學中描述價格持續下跌與經濟衰退相互強化的動態過程&#xff0c;其核心邏輯可拆解為以下鏈條&#xff1a; 需求端萎縮&#xff1a;居民消費信…

單一責任原則在Java設計模式中的深度解析

在軟件開發中&#xff0c;設計模式提供了一種解決特定問題的思路。在眾多的設計原則中&#xff0c;單一責任原則&#xff08;Single Responsibility Principle&#xff0c;SRP&#xff09;是一個非常重要的概念。它主要強調一個類應該只有一個責任&#xff0c;也就是說&#xf…

開源后臺管理系統推薦

前言 在當今數字化時代&#xff0c;企業和組織對于管理和運營資源的需求日益增加。開源后臺管理系統應運而生&#xff0c;為用戶提供了一個靈活、可定制化的管理平臺。本文將介紹開源后臺管理系統的概念和優勢&#xff0c;探討常見的開源后臺管理系統&#xff0c;以及如何選擇…

原生微信小程序實現導航漫游(Tour)

效果&#xff1a; 小程序實現導航漫游 1、組件 miniprogram/components/tour/index.wxml <!--wxml--> <view class"guide" wx:if"{{showGuide}}"><view style"{{guideStyle}}" class"guide-box"><view class&quo…

Docker容器命令速查表

這是 Docker 的快速參考備忘單。 你可以在這里找到最常見的 Docker 命令。 安裝 curl -sSL https://get.docker.com/ | sh sudo chmod 777 /var/run/docker.sock在后臺創建和運行容器 $ docker run -d -p 80:80 docker/getting-started-d - 以分離&#xff08;后臺&#xff0…

Qt QML實現鼠標自由選擇不規則區域進行截圖

背景 不規則區域進行截圖是一種常見的應用場景&#xff0c;通常用于程序截圖工具或者圖像處理軟件中。主要是為了讓用戶可以自由選擇任意形狀的區域進行截圖&#xff0c;而不僅僅局限于矩形區域。這樣用戶可以更靈活地進行截圖操作&#xff0c;特別是對于需要截取特定形狀區域…

SpringDataRedis存儲Redis的數據序列化

在使用Spring Data Redis存儲數據至Redis時&#xff0c;選擇合適的序列化策略至關重要。它不僅影響數據存儲的效率和空間利用率&#xff0c;還關系到跨語言兼容性和系統的擴展性。適當的序列化方式可以確保數據正確無誤地被存儲和讀取&#xff0c;提升系統的穩定性和維護性&…

交易系統【三】網關

第二章本來是要講消息總線&#xff0c;審核說是過度宣傳&#xff0c;就放棄了&#xff0c;不糾結&#xff0c;先跳過。 網關和消息總線的底層技術都和網絡相關&#xff0c;兩者也有很重要的差別。消息總線主要用于內網&#xff0c;受交換機和網卡影響比較大&#xff0c;網絡狀…