其实有的时候真的是很佩服NET而鄙视JAVA,微软的东西都特别的人性化(当然不是说他封装的控件多么多么好啊,我一向讨厌别人封装),拿一个最简单的例子,字符串合并,在NET中可以这么实现:
String str=String.format("my name is {0}",renyanwei);
这样就可以把字符串给合并了,但是在JAVA中,虽然你可以利用printf语句实现
System.out.printf("my name is %s","renyanwei");
但是,我们大多数情况不止是为了输出用的啊,有的时候只是为了得到一个字符串来进行高级处理,像生成SQL乱七八糟的,JAVA实现起来就很不爽了,所以这里我写了个小方法,来实现C#中这个功能,来看具体代码
class TestFormat
{
public static void main(String[] args)
{
String str1=StringFormat.format("my name is {0}, my age is {1}","renyanwei",20);
String str2=StringFormat.format("I love {0}, you hate {0}","java");
System.out.println(str1);
System.out.println(str2);
// 输出
//my name is renyanwei, my age is 20
//I love java, you hate java
}
}
class StringFormat
{
//字符串合并方法,返回一个合并后的字符串
public static String format(String str,Object ... args)
{
//这里用于验证数据有效性
if(str==null||"".equals(str))
return "";
if(args.length==0)
{
return str;
}
/*
*如果用于生成SQL语句,这里用于在字符串前后加单引号
for(int i=0;i<args.length;i++)
{
String type="java.lang.String";
if(type.equals(args[i].getClass().getName()))
args[i]="'"+args[i]+"'";
}
*/
String result=str;
//这里的作用是只匹配{}里面是数字的子字符串
java.util.regex.Pattern p = java.util.regex.Pattern.compile("\\{(\\d+)\\}");
java.util.regex.Matcher m = p.matcher(str);
while(m.find())
{
//获取{}里面的数字作为匹配组的下标取值
int index=Integer.parseInt(m.group(1));
//这里得考虑数组越界问题,{1000}也能取到值么??
if(index<args.length)
{
//替换,以{}数字为下标,在参数数组中取值
result=result.replace(m.group(),args[index].toString());
}
}
return result;
}
}
这里正好复习了一下正则表达式和JAVASE5.0的新特性可变长参数Varargs
,具体用法是在参数类型和参数名之间使用"..."(三个英文的点)表示该参数是可以变长的,这个新特性真的是太TM好用了,说白了就是实现了动态数组!调用的时候你随便多少参数都成(注意类型必须相同),传到方法后自动给你生成个数组,然后你遍历数组就可以得到值了:
public static String format(String str,Object ... args)
看看程序是怎么调用的,多练习下就可以熟练使用这个新特性了,如果大牛还有更好的方法欢迎来共享下
分享到:
相关推荐
在JDK1.5中,String类增加了一个非常有用的静态函数format(String format, Objece... argues),可以将各类数据格式化为字符串并输出。其中format参数指定了输出的格式,是最复杂也是最难掌握的一点,而argues则是一...
java字符串格式化String.format()
String.format中大括号的加入方法,需要的朋友可以参考下。
C# String.Format格式说明
JAVA_String.format
VB.NET 字符串与二进制间的转换 VB.NET 字符串与二进制间的转换 VB.NET 字符串与二进制间的转换 VB.NET 字符串与二进制间的转换 VB.NET 字符串与二进制间的转换
java 的 String.format() 的 Javascript 实现,增加了支持格式化百分比和后缀-SI,如 120M、30K。 将 Formatter.format() 移植到 javascript 的基本开始。 目前依赖 .toLocaleString() 进行命名日期格式。 请参阅...
305-字符串函数string.h应用举例(51单片机C语言实例Proteus仿真和代码)305-字符串函数string.h应用举例(51单片机C语言实例Proteus仿真和代码)305-字符串函数string.h应用举例(51单片机C语言实例Proteus仿真和代码)...
基于Keil实现字符串函数string.h的简单应用基于Keil实现字符串函数string.h的简单应用基于Keil实现字符串函数string.h的简单应用基于Keil实现字符串函数string.h的简单应用基于Keil实现字符串函数string.h的简单应用...
2、上正文,js扩展String.prototype.format字符串拼接的功能,首先是基础功能的改造: String.prototype.format = function(){ if(arguments.length==0){ return this; } for(var s=this, i=0; i<arguments.
基于java.net.URL和 java.net.URLConnection 类的网络编程跨域请求并输出结果的测试代码
string.Empty就相当于”” 一般用于字符串的初始化 比如: string a; Console.WriteLine(a);//这里会报错,因为没有初始化a 而下面不会报错: string a=string.Empty; Console.WriteLine(a); 或者用于比较: if(a==...
java String.format用法
asp.net String.IsNullOrEmpty 方法
最新单片机仿真 字符串函数string.h应用举例最新单片机仿真 字符串函数string.h应用举例最新单片机仿真 字符串函数string.h应用举例最新单片机仿真 字符串函数string.h应用举例最新单片机仿真 字符串函数string.h...
.NET 3.5 String.cs 源代码
这篇文章将要讨论 Java 6 中是如何实现 String.intern 方法的,以及这个方法在 Java 7 以及 Java 8 中做了哪些调整。
本篇文章主要介绍了JAVA字符串格式化-String.format()的使用,具有一定的参考价值,有需要的可以了解一下。
简单实现string.h 完成字符串的操作实现 完成串ADT的实现 加深数据结构的学习