JAVA字符串占位符替换问题

kevin_hw 2010-10-20 11:01:18
如果有字符串 “我是{0},我来自{1},今年{2}岁。 请问怎样用String的内置方法用替换掉字符串的占位符:比如“我是中国人,我来自北京,今年22岁”。 谢谢各位。
...全文
1669 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
17楼精辟!
zhuJustice 2011-10-10
  • 打赏
  • 举报
回复
我还以为java里面没有的呢,学习了咔
CloudX2019 2011-10-10
  • 打赏
  • 举报
回复
多看系统api
松月 2011-10-10
  • 打赏
  • 举报
回复
原来还有这么多好方法啊!看来我out了!
wuxiaoke2009 2011-10-10
  • 打赏
  • 举报
回复
学习了
IT淡淡 2011-10-10
  • 打赏
  • 举报
回复
怎么没人用String.format();

String str = String.format("我是%s","中国人");
system.out.print(str);

santou_wang 2011-10-10
  • 打赏
  • 举报
回复
你说的占位符是不是指这个?
System.out.printf("我是%s,我来自%s,今年%d岁", "中国人","北京",22);
-droidcoffee- 2010-10-28
  • 打赏
  • 举报
回复
楼主把我问的问题给问了, 又学习了。。。真好
weiguoxin 2010-10-21
  • 打赏
  • 举报
回复
没白来的说!

系统api也好,自己实现也好,都不错

个人喜欢正则~
加贝氏_usun 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bao110908 的回复:]
JDK 中有正好有这功能:java.text.MessageFormat

而 java.text.MessageFormat 正好用的是 {0}, {1} 这样,也正好是从 0 开始的,呵呵。


Java code
String str = MessageFormat.format("我是{0},我来自{1},今年{2}岁", "中国人", "北京", "22");


Me……
[/Quote]
这个东东不错 java.text.MessageFormat
panxunlong1202 2010-10-21
  • 打赏
  • 举报
回复
谢谢。。强人。。QQ949585518
laukie 2010-10-21
  • 打赏
  • 举报
回复
楼上的答案还是蛮强大的
senry17 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bao110908 的回复:]
JDK 中有正好有这功能:java.text.MessageFormat

而 java.text.MessageFormat 正好用的是 {0}, {1} 这样,也正好是从 0 开始的,呵呵。


Java code
String str = MessageFormat.format("我是{0},我来自{1},今年{2}岁", "中国人", "北京", "22");


Me……
[/Quote]
以后还得多研究系统类库吧
风影萧诺 2010-10-20
  • 打赏
  • 举报
回复
恩 看到2楼的实现的比较好、、、、
thegodofwar 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bao110908 的回复:]
JDK 中有正好有这功能:java.text.MessageFormat

而 java.text.MessageFormat 正好用的是 {0}, {1} 这样,也正好是从 0 开始的,呵呵。


Java code
String str = MessageFormat.format("我是{0},我来自{1},今年{2}岁", "中国人", "北京", "22");


Me……
[/Quote]
火龙果真职业...
eggno8 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bao110908 的回复:]

JDK 中有正好有这功能:java.text.MessageFormat

而 java.text.MessageFormat 正好用的是 {0}, {1} 这样,也正好是从 0 开始的,呵呵。

Java code
String str = MessageFormat.format("我是{0},我来自{1},今年{2}岁", "中国人", "北京", "22");


Mess……
[/Quote]
学习了~这个好啊
  • 打赏
  • 举报
回复
JDK 中有正好有这功能:java.text.MessageFormat

而 java.text.MessageFormat 正好用的是 {0}, {1} 这样,也正好是从 0 开始的,呵呵。

String str = MessageFormat.format("我是{0},我来自{1},今年{2}岁", "中国人", "北京", "22");


MessageFormat.format 方法从 JDK 5 开始支持变参,可以直接用逗号添加参数。
closewbq 2010-10-20
  • 打赏
  • 举报
回复

public static void main(String[] args){
String str="我是{0},我来自{1},今年{2}岁";
String[] arr={"中国人","北京","22"};
System.out.println(fillStringByArgs(str, arr));
}

private static String fillStringByArgs(String str,String[] arr){
Matcher m=Pattern.compile("\\{(\\d)\\}").matcher(str);
while(m.find()){
str=str.replace(m.group(),arr[Integer.parseInt(m.group(1))]);
}
return str;
}
zn85600301 2010-10-20
  • 打赏
  • 举报
回复
String str="我是{0},我来自{1},今年{2}岁";
str = str.replace("{0}", "中国人");
str = str.replace("{1}", "北京");
str = str.replace("{2}", "22");
System.out.println(str);
不知道这么能满足要求不?

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧