android strings: %s、%1$s、%d、%1$d占位符


實際開發的過程中我們有時候會遇到,一個TextView里面會遇到會有一個一大串固定的文字,而里面的數字或者個別字需要根據后台的接口而展示的。這個時候我們最簡單的方法就是在string.xml文件里 使用 %s、%1$s、%d、%1$d,而在頁面展示的時候我們只需要用實際展示的文字或者數據替換掉這些占位符就可以了。

%1$s表示把第一個位置的占位符替換成string類型

%1$d表示把第一個位置的占位符替換成int類型

數字表示替換字符串中第幾個被替換的位置,若一個字符串要替換兩個int類型,在替換位置分別寫%1$d和%2$d.

%s 、%d為縮寫方式,只替換一個位置,可以這么寫。

例1: %s

strings.xml

<string name="strings1">My name is %s</string>

代碼中:

TextView tv_text = findViewById(R.id.tv_text);
String text = getString(R.string.strings1, "Tom");
tv_text.setText(text);
Log.i(TAG, "text: "+text);

Log:

I/StringsApiUseDemoActivity: text: My name is Tom

例2:%d

<string name="strings1">My age is %d</string>

代碼中:

TextView tv_text = findViewById(R.id.tv_text);
String text = getString(R.string.strings2, 20);
tv_text.setText(text);
Log.i(TAG, "text: "+text);

Log:

I/StringsApiUseDemoActivity: text: My age is 20

例3:%1$s

<string name="strings3">My name is %1$s, you name is %2$s, others name is %3$s</string>

代碼中:

TextView tv_text = findViewById(R.id.tv_text);
String text = getString(R.string.strings3, "Tom", "Mike", "John");
tv_text.setText(text);
Log.i(TAG, "text: "+text);

Log:

I/StringsApiUseDemoActivity: text: My name is Tom, you name is Mike, others name is John

例4:%1$d

<string name="strings4">My age is %1$d, you age is %2$d, others age is %3$d</string>

代碼中:

TextView tv_text = findViewById(R.id.tv_text);
String text = getString(R.string.strings4, 20, 25, 30);
tv_text.setText(text);
Log.i(TAG, "text: "+text);

Log:

I/StringsApiUseDemoActivity: text: My age is 20, you age is 25, others age is 30

 

參考鏈接:

1. %s、%1$s、%d、%1$d占位符

2. android的string.xml中的%s、%1$s、%d、%1$d的使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM