将String字符串 变成Stringjava数组变成字符串 如将a="123" 变成String[] ss={"1","2","3"}

第3章 常用数据类型的用法_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
第3章 常用数据类型的用法
上传于||暂无简介
大小:401.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢23476人阅读
String 类:
String 类代表字符串。Java 程序中的所有字符串字面值都作为此类的实例实现。字符串是常量,它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以
可以共享。
String 类包括的方法可用于检查序列的单个字符、比较字符串、搜索字符串、提取子字符串、创建字符串副本并将所有字符全部转换为大写或小写。Java 语言提供对字符串串联符号(&+&)以及将其他
对象转换为字符串的特殊支持。字符串串联是通过 StringBuilder(或 StringBuffer)类及其 append 方法实现的。字符串转换是通过 toString 方法实现的,该方法由 Object 类定义,并可被 Java
中的所有类继承。
String 类的split方法可以根据给定正则表达式的匹配拆分字符串,故而可以把字符串分离成单个字符的形式。
StringTokenizer 类:
string tokenizer 类允许应用程序将字符串分解为标记。tokenization 方法比 StreamTokenizer 类所使用的方法更简单。StringTokenizer 方法不区分标识符、数和带引号的字符串,它们也不识别并
跳过注释。可以在创建时指定,也可以根据每个标记来指定分隔符(分隔标记的字符)集。
StringTokenizer 的实例有两种行为方式,这取决于它在创建时使用的 returnDelims 标志的值是 true 还是 false:
如果标志为 false,则分隔符字符用来分隔标记。标记是连续字符(不是分隔符)的最大序列。
如果标志为 true,则认为那些分隔符字符本身即为标记。因此标记要么是一个分隔符字符,要么是那些连续字符(不是分隔符)的最大序列。
StringTokenizer 对象在内部维护字符串中要被标记的当前位置。某些操作将此当前位置移至已处理的字符后。通过截取字符串的一个子串来返回标记,该字符串用于创建 StringTokenizer 对象。
//如何把一段逗号分割的字符串转换成一个数组
package com.test.//构建自己的包
import java.util.StringT//导入StringTokenizer 类,后面要用到此类来创建对象和此类的方法。
public class StrToArray{
&&& public static void main(String[] args) {
&String str=&a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z&;
&String[] strArray=
&System.out.println(&调用convertStrToArray结果:&);
&strArray = convertStrToArray(str);
&printArray(strArray);
&System.out.println(&调用convertStrToArray2结果:&);
&&&&&&& strArray = convertStrToArray2(str);
&&&&&&& printArray(strArray);
&&& //使用String的split 方法&&
&&& public static String[] convertStrToArray(String str){&&
&&&&&&& String[] strArray =&&
&&&&&&& strArray = str.split(&,&); //拆分字符为&,& ,然后把结果交给数组strArray
&&&&&&& return strA
&&& //使用StringTokenizer实现&&
&&& //api说明:StringTokenizer 是出于兼容性的原因而被保留的遗留类&&
&&& //(虽然在新代码中并不鼓励使用它)。建议所有寻求此功能的人使用&&
&&& //String 的 split 方法或 java.util.regex 包&&
&&& public static String[] convertStrToArray2(String str){
&&&&&&& StringTokenizer st = new StringTokenizer(str,&,&);//把&,&作为分割标志,然后把分割好的字符赋予StringTokenizer对象。
&&&&&&& String[] strArray = new String[st.countTokens()];//通过StringTokenizer 类的countTokens方法计算在生成异常之前可以调用此 tokenizer 的 nextToken 方法的次数。
&&&&&&& int i=0;
&&&&&&& while(st.hasMoreTokens()){//看看此 tokenizer 的字符串中是否还有更多的可用标记。
&&&&&&&&&&& strArray[i++] = st.nextToken();//返回此 string tokenizer 的下一个标记。
&&&&&&& return strA
&&& //输出数组
&&& public static void printArray(String[] array){&&
&&& &for(int i=0;i&array.i++){
&&&System.out.print(array[i]);
&&&if(i==array.length-1){
&&&&System.out.print(&\n&);
&&&&System.out.print(&,&);
此类的用的虽然不是很多,方法简单已掌握,但还是有必要去了解。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:175791次
积分:2150
积分:2150
排名:第9900名
原创:37篇
转载:36篇
评论:18条
(1)(2)(1)(3)(2)(1)(3)(1)(2)(1)(2)(4)(1)(1)(1)(2)(2)(1)(2)(1)(3)(1)(1)(6)(4)(6)(5)(9)(2)(2)随笔 - 53&
文章 - 0&评论 - 20&trackbacks - 0
String : 字符串类型
一、构造函数&&&& String(byte[ ] bytes):通过byte数组构造字符串对象。&&&& String(char[ ] value):通过char数组构造字符串对象。&&&& String(Sting original):构造一个original的副本。即:拷贝一个original。&&&& String(StringBuffer buffer):通过StringBuffer数组构造字符串对象。&&例如:&&&&& byte[] b = {'a','b','c','d','e','f','g','h','i','j'};&&&&& char[] c = {'0','1','2','3','4','5','6','7','8','9'};&&&&& String sb = new String(b);&&&&&&&&&&&&&&&& //abcdefghij&&&&& String sb_sub = new String(b,3,2);&&&& //de&&&&& String sc = new String(c);&&&&&&&&&&&&&&&&& //&&&&& String sc_sub = new String(c,3,2);&&& //34&&&&& String sb_copy = new String(sb);&&&&&& //abcdefghij&&&&&&& System.out.println("sb:"+sb);&&&&& System.out.println("sb_sub:"+sb_sub);&&&&& System.out.println("sc:"+sc);&&&&& System.out.println("sc_sub:"+sc_sub);&&&&& System.out.println("sb_copy:"+sb_copy);&&&&& 输出结果:sb:abcdefghij&&&&&&&&&&&&&&&&&&&&& sb_sub:de&&&&&&&&&&&&&&&&&& &&& sc:&&&&&&&&&&&&&&&&&&&&&&& sc_sub:34&&&&&&&&&&&&&&&&&&&& && sb_copy:abcdefghij
二、方法:
&&&& 说明:①、所有方法均为public。&&&&&&&&&& ②、书写格式: [修饰符] &返回类型&&方法名([参数列表])&
&&&&& 例如:static int parseInt(String s)&&&&& 表示此方法(parseInt)为类方法(static),返回类型为(int),方法所需要为String类型。
1. char charAt(int index) :取字符串中的某一个字符,其中的参数index指的是字符串中序数。字符串的序数从0开始到length()-1 。&&& 例如:String s = new String("abcdefghijklmnopqrstuvwxyz");&&&&&&&&& System.out.println("s.charAt(5): " + s.charAt(5) );&&&&&&&&& 结果为: s.charAt(5): f2. int compareTo(String anotherString) :当前String对象与anotherString比较。相等关系返回0;不相等时,从两个字符串第0个字符开始比较,返回第一个不相等的字符差,另一种情况,较长字符串的前面部分恰巧是较短的字符串,返回它们的长度差。3. int compareTo(Object o) :如果o是String对象,和2的功能一样;否则抛出ClassCastException异常。&&& 例如:String s1 = new String("abcdefghijklmn");&&&&&&&&&&& String s2 = new String("abcdefghij");&&&&&&&&&& String s3 = new String("abcdefghijalmn");&&&&&&&&&& System.out.println("s1.compareTo(s2): " + s1.compareTo(s2) ); //返回长度差&&&&&&&&&& System.out.println("s1.compareTo(s3): " + s1.compareTo(s3) ); //返回'k'-'a'的差&&&&&&&&&& 结果为:s1.compareTo(s2): 4&&&&&&&&&&&&&&&& &&&&& s1.compareTo(s3): 104. String concat(String str) :将该String对象与str连接在一起。5. boolean contentEquals(StringBuffer sb) :将该String对象与StringBuffer对象sb进行比较。6. static String copyValueOf(char[] data) :7. static String copyValueOf(char[] data, int offset, int count) :这两个方法将char数组转换成String,与其中一个构造函数类似。8. boolean endsWith(String suffix) :该String对象是否以suffix结尾。&&& 例如:String s1 = new String("abcdefghij");&&&&&&&&&& String s2 = new String("ghij");&&&&&&&&&& System.out.println("s1.endsWith(s2): " + s1.endsWith(s2) );&&&&&&&&&& 结果为:s1.endsWith(s2): true9. boolean equals(Object anObject) :当anObject不为空并且与当前String对象一样,返回true;否则,返回false。10. byte[] getBytes() :将该String对象转换成byte数组。11. void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) :该方法将字符串拷贝到字符数组中。其中,srcBegin为拷贝的起始位置、srcEnd为拷贝的结束位置、字符串数值dst为目标字符数组、dstBegin为目标字符数组的拷贝起始位置。&&&& 例如:char[] s1 = {'I',' ','l','o','v','e',' ','h','e','r','!'};//s1=I love her!&&&&&&&&&& String s2 = new String("you!"); s2.getChars(0,3,s1,7); //s1=I love you!&&&&&&&&&& System.out.println( s1 );&&&&&&&&&& 结果为:I love you!12. int hashCode() :返回当前字符的哈希表码。13. int indexOf(int ch) :只找第一个匹配字符位置。14. int indexOf(int ch, int fromIndex) :从fromIndex开始找第一个匹配字符位置。15. int indexOf(String str) :只找第一个匹配字符串位置。16. int indexOf(String str, int fromIndex) :从fromIndex开始找第一个匹配字符串位置。&&&&& 例如:String s = new String("write once, run anywhere!");&&&&&&&&&&&&& String ss = new String("run");&&&&&&&&&&&&& System.out.println("s.indexOf('r'): " + s.indexOf('r') );&&&&&&&&&&&&& System.out.println("s.indexOf('r',2): " + s.indexOf('r',2) );&&&&&&&&&&&&& System.out.println("s.indexOf(ss): " + s.indexOf(ss) );&&&&&&&&&&&&& 结果为:s.indexOf('r'): 1&&&&&&&&&&&&&&&&&&&&& s.indexOf('r',2): 12&&&&&&&&&&&&&&&&&&&&& s.indexOf(ss): 1217. int lastIndexOf(int ch)18. int lastIndexOf(int ch, int fromIndex)19. int lastIndexOf(String str)20. int lastIndexOf(String str, int fromIndex) 以上四个方法与13、14、15、16类似,不同的是:找最后一个匹配的内容。public class CompareToDemo {&&&&& public static void main (String[] args) {&& &&&&&&& String s1 = new String("acbdebfg");&&&&& &&&&&&& && System.out.println(s1.lastIndexOf((int)'b',7));&&&& }}运行结果:5&&&&&& (其中fromIndex的参数为 7,是从字符串acbdebfg的最后一个字符g开始往前数的位数。既是从字符c开始匹配,寻找最后一个匹配b的位置。所以结果为 5)21. int length() :返回当前字符串长度。22. String replace(char oldChar, char newChar) :将字符号串中第一个oldChar替换成newChar。23. boolean startsWith(String prefix) :该String对象是否以prefix开始。24. boolean startsWith(String prefix, int toffset) :该String对象从toffset位置算起,是否以prefix开始。&&&& 例如:String s = new String("write once, run anywhere!");&&&&&&&&&&&& String ss = new String("write");&&&&&&&&&&&& String sss = new String("once");&&&&&&&&&&&& System.out.println("s.startsWith(ss): " + s.startsWith(ss) );&&&&&&&&&&&& System.out.println("s.startsWith(sss,6): " + s.startsWith(sss,6) );&&&&&&&&&&&& 结果为:s.startsWith(ss): true&&&&&&&&&&&&&&&&&&&& s.startsWith(sss,6): true25. String substring(int beginIndex) :取从beginIndex位置开始到结束的子字符串。26.String substring(int beginIndex, int endIndex) :取从beginIndex位置开始到endIndex位置的子字符串。27. char[ ] toCharArray() :将该String对象转换成char数组。28. String toLowerCase() :将字符串转换成小写。29. String toUpperCase() :将字符串转换成大写。&&&& 例如:String s = new String("java.lang.Class String");&&&&&&&&&&&& System.out.println("s.toUpperCase(): " + s.toUpperCase() );&&&&&&&&&&&& System.out.println("s.toLowerCase(): " + s.toLowerCase() );&&&&&&&&&&&& 结果为:s.toUpperCase(): JAVA.LANG.CLASS STRING&&&&&&&&&&&&&&&&& s.toLowerCase(): java.lang.class string30. static String valueOf(boolean b)31. static String valueOf(char c)32. static String valueOf(char[] data)33. static String valueOf(char[] data, int offset, int count)34. static String valueOf(double d)35. static String valueOf(float f)36. static String valueOf(int i)37. static String valueOf(long l)38. static String valueOf(Object obj)&&&& 以上方法用于将各种不同类型转换成Java字符型。这些都是类方法。
Java中String类的常用方法:public char charAt(int index)返回字符串中第index个字符;public int length()返回字符串的长度;public int indexOf(String str)返回字符串中第一次出现str的位置;public int indexOf(String str,int fromIndex)返回字符串从fromIndex开始第一次出现str的位置;public boolean equalsIgnoreCase(String another)比较字符串与another是否一样(忽略大小写);public String replace(char oldchar,char newChar)在字符串中用newChar字符替换oldChar字符public boolean startsWith(String prefix)判断字符串是否以prefix字符串开头;public boolean endsWith(String suffix)判断一个字符串是否以suffix字符串结尾;public String toUpperCase()返回一个字符串为该字符串的大写形式;public String toLowerCase()返回一个字符串为该字符串的小写形式public String substring(int beginIndex)返回该字符串从beginIndex开始到结尾的子字符串;public String substring(int beginIndex,int endIndex)返回该字符串从beginIndex开始到endsIndex结尾的子字符串public String trim()返回该字符串去掉开头和结尾空格后的字符串public String[] split(String regex)将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组实例:&&public class SplitDemo{&&&& public static void main (String[] args) {&&&&&&&&&&&& String date = "";&&&&&&&&&&& String[ ] dateAfterSplit= new String[3];&&&&&&&&&&& dateAfterSplit=date.split("/");&&&&&&&& //以&#8220;/&#8221;作为分隔符来分割date字符串,并把结果放入3个字符串中。&&&&&&&&&&& for(int i=0;i&dateAfterSplit.i++)&&& &&&&&&&&&&&&&&&&&& System.out.print(dateAfterSplit[i]+" ");&&&&& }}运行结果:<font color="#ff 09 10&&&&&&&&& //结果为分割后的3个字符串
实例:TestString1.java:程序代码public class TestString1{&&& public static void main(String args[]) {&&&&&&& String s1 = "Hello World" ;&&&&&&& String s2 = "hello world" ;&&&&&&& System.out.println(s1.charAt(1)) ;&&&&&&& System.out.println(s2.length()) ;&&&&&&& System.out.println(s1.indexOf("World")) ;&&&&&&& System.out.println(s2.indexOf("World")) ;&&&&&&& System.out.println(s1.equals(s2)) ;&&&&&&& System.out.println(s1.equalsIgnoreCase(s2)) ;
&&&&&&& String s = "我是J2EE程序员" ;&&&&&&& String sr = s.replace('我','你') ;&&&&&&& System.out.println(sr) ;&&& }}
TestString2.java:程序代码
public class TestString2{&&& public static void main(String args[]) {&&&&&&& String s = "Welcome to Java World!" ;&&&&&&& String s2 = "&& magci&& " ;&&&&&&& System.out.println(s.startsWith("Welcome")) ;&&&&&&& System.out.println(s.endsWith("World")) ;&&&&&&& String sL = s.toLowerCase() ;&&&&&&& String sU = s.toUpperCase() ;&&&&&&& System.out.println(sL) ;&&&&&&& System.out.println(sU) ;&&&&&&& String subS = s.substring(11) ;&&&&&&& System.out.println(subS) ;&&&&&&& String s1NoSp = s2.trim() ;&&&&&&& System.out.println(s1NoSp) ;&&& }
阅读(...) 评论()第3章 常用数据类型的用法new_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
第3章 常用数据类型的用法new
上传于||文档简介
&&c&#8203;#&#8203;程&#8203;序&#8203;设&#8203;计&#8203;及&#8203;应&#8203;用&#8203;P&#8203;P&#8203;T
大小:534.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢& 使用C#格式化字符串
如果你熟悉Microsoft Foundation Classes(MFC)的CString,Windows Template Library(WTL)的CString或者Standard Template Library(STL)的字符串类,那么你对String.Format方法肯定很熟悉。在C#中也经常使用这个方法来格式化字符串,比如下面这样:
int x = 16;
decimal y = 3.57m;
string h = String.Format( &#8220;item {0} sells at {1:C}&#8220;, x, y );
Console.WriteLine(h);
在我的机器上,可以得到下面的输出:
item 16 sells at ¥3.57
也许你的机器上的输出和这个不太一样。这是正常的,本文稍后就会解释这个问题。
在我们日常使用中,更多的是使用Console.WriteLine方法来输出一个字符串。其实String.Format和Console.WriteLine有很多共同点。两个方法都有很多重载的格式并且采用无固定参数的对象数组作为最后一个参数。下面的两个语句会产生同样的输出。
Console.WriteLine( &#8220;Hello {0} {1} {2} {3} {4} {5} {6} {7} {8}&#8220;, 123, 45.67, true, &#8216;Q&#8216;, 4, 5, 6, 7, &#8216;8&#8216;);
string u = String.Format(&#8220;Hello {0} {1} {2} {3} {4} {5} {6} {7} {8}&#8220;, 123, 45.67, true, &#8216;Q&#8216;, 4, 5, 6, 7, &#8216;8&#8216;);
Console.WriteLine(u);
输出如下:
Hello 123 45.67 True Q 4 5 6 7 8
Hello 123 45.67 True Q 4 5 6 7 8
2 字符串格式
String.Format和WriteLine都遵守同样的格式化规则。格式化的格式如下:&#8221;{ N [, M ][: formatString ]}&#8221;, arg1, &#8230; argN,在这个格式中:
1) N是从0开始的整数,表示要格式化的参数的个数
2) M是一个可选的整数,表示格式化后的参数所占的宽度,如果M是负数,那么格式化后的值就是左对齐的,如果M是正数,那么格式化后的值是右对齐的
3) formatString是另外一个可选的参数,表示格式代码
argN表示要格式化的表达式,和N是对应的。
如果argN是空值,那么就用一个空字符串来代替。如果没有formatString,那么就用参数N对应的ToString方法来格式化。下面的语句会产生同样的输出:
public class TestConsoleApp
public static void Main(string[] args)
Console.WriteLine(123);
Console.WriteLine(&#8220;{0}&#8220;, 123);
Console.WriteLine(&#8220;{0:D3}&#8220;, 123);
也可以通过String.Format得到同样的输出。
string s = string.Format(&#8220;123&#8220;);
string t = string.Format(&#8220;{0}&#8220;, 123);
string u = string.Format(&#8220;{0:D3}&#8220;, 123);
Console.WriteLine(s);
Console.WriteLine(t);
Console.WriteLine(u);
因此有如下结论:
(,M)决定了格式化字符串的宽度和对齐方向
(:formatString)决定了如何格式化数据,比如用货币符号,科学计数法或者16进制。就像下面这样:
Console.WriteLine(&#8220;{0,5} {1,5}&#8220;, 123, 456);
Console.WriteLine(&#8220;{0,-5} {1,-5}&#8220;, 123, 456);
也可以合并这些表达式,先放一个逗号,再放一个冒号。就像这样:
Console.WriteLine(&#8220;{0,-10:D6} {1,-10:D6}&#8220;, 123, 456);
我们可以用这种格式化特性来对齐我们的输出。
Console.WriteLine(&#8220;\n{0,-10}{1,-3}&#8220;, &#8220;Name&#8220;,&#8220;Salary&#8220;);
Console.WriteLine(&#8220;&#8212;&#8212;&#8212;&#8212;&#8212;-&#8220;);
Console.WriteLine(&#8220;{0,-10}{1,6}&#8220;, &#8220;Bill&#8220;, 123456);
Console.WriteLine(&#8220;{0,-10}{1,6}&#8220;, &#8220;Polly&#8220;, 7890);
&#8212;&#8212;&#8212;&#8212;&#8212;-
3 格式化标识符
标准的数学格式字符串用于返回通常使用的字符串。它们通常象X0这样的格式。X是格式化标识符,0是精度标识符。格式标识符号共有9种,它们代表了大多数常用的数字格式。就像下表所示:
Currency 货币格式
Decimal 十进制格式(十进制整数,不要和.Net的Decimal数据类型混淆了)
Exponent 指数格式
Fixed point 固定精度格式
General 常用格式
用逗号分割千位的数字,比如1234将会被变成1,234
Percentage 百分符号格式
Round-trip
圆整(只用于浮点数)保证一个数字被转化成字符串以后可以再被转回成同样的数字
Hex 16进制格式
如果我们使用下面的表达方式,让我们看看会发生什么
public class FormatSpecApp
public static void Main(string[] args)
int i = 123456;
Console.WriteLine(&#8220;{0:C}&#8220;, i); // ¥123,456.00
Console.WriteLine(&#8220;{0:D}&#8220;, i); // 123456
Console.WriteLine(&#8220;{0:E}&#8220;, i); // 1.5
Console.WriteLine(&#8220;{0:F}&#8220;, i); //
Console.WriteLine(&#8220;{0:G}&#8220;, i); // 123456
Console.WriteLine(&#8220;{0:N}&#8220;, i); // 123,456.00
Console.WriteLine(&#8220;{0:P}&#8220;, i); // 12,345,600.00 %
Console.WriteLine(&#8220;{0:X}&#8220;, i); // 1E240
精度控制标识控制了有效数字的个数或者十进制数小数的位数。
Console.WriteLine(&#8220;{0:C5}&#8220;, i); // ¥123,456.00
Console.WriteLine(&#8220;{0:D5}&#8220;, i); // 123456
Console.WriteLine(&#8220;{0:E5}&#8220;, i); // 1.2
Console.WriteLine(&#8220;{0:F5}&#8220;, i); // 00
Console.WriteLine(&#8220;{0:G5}&#8220;, i); // 1.23456E5
Console.WriteLine(&#8220;{0:N5}&#8220;, i); // 123,456.00000
Console.WriteLine(&#8220;{0:P5}&#8220;, i); // 12,345,600.00000 %
Console.WriteLine(&#8220;{0:X5}&#8220;, i); // 1E240
R(圆整)格式仅仅对浮点数有效。这个值首先会用通用格式来格式化。对于双精度数有15位精度,对于单精度数有7位精度。如果这个值可以被正确地解析回原始的数字,就会用通用格式符来格式化。如果不能解析回去的话,那么就会用17位精度来格式化双精度数,用9位精度来格式化单精度数。尽管我们可以在圆整标识符后面添加有效数字的位数,但是它会被忽略掉。
double d = 1.4567890;
Console.WriteLine(&#8220;Floating-Point:\t{0:F16}&#8220;, d);
Console.WriteLine(&#8220;Roundtrip:\t{0:R16}&#8220;, d);
如果标准格式化标识符还不能满足你。你可以使用图形化格式字符串来创建定制的字符串输出。图形化格式化使用占位符来表示最小位数,
最大位数,定位符号,负号的外观以及其它数字符号的外观。就像下表所示
用0填充不足的位数
数字占位符
用#代替实际的位数
十进制小数点
千位分隔符
用逗号进行千位分割,比如把1000分割成1,000
显示一个百分标识
用指数符号格式化输出
用于传统格式的格式化序列,比如&#8221;\n&#8221;(新行)
&#8216;ABC&#8217;
&#8220;ABC&#8221;
常量字符串
显示单引号或者双引号里面的字符串
区域分隔符
如果数字会被格式化成整数,负数,或者0,用;来进行分隔
数字除以1000
看下面的例子:
double i = ;
Console.WriteLine();
Console.WriteLine(&#8220;{0:}&#8220;, i); //
Console.WriteLine(&#8220;{0:00.}&#8220;, i); //12.
Console.WriteLine(&#8220;{0:0,.}&#8220;, i);
Console.WriteLine(&#8220;{0:#0.000}&#8220;, i);
Console.WriteLine(&#8220;{0:#0.000;(#0.000)}&#8220;, i);
Console.WriteLine(&#8220;{0:#0.000;(#0.000);&zero&}&#8220;, i); //
Console.WriteLine(&#8220;{0:#%}&#8220;, i);
Console.WriteLine();
Console.WriteLine(&#8220;{0:}&#8220;, i); //-
Console.WriteLine(&#8220;{0:00.}&#8220;, i); //-12.
Console.WriteLine(&#8220;{0:0,.}&#8220;, i);
Console.WriteLine(&#8220;{0:#0.000}&#8220;, i);
Console.WriteLine(&#8220;{0:#0.000;(#0.000)}&#8220;, i);
Console.WriteLine(&#8220;{0:#0;(#0);&zero&}&#8220;, i); // (123456)
Console.WriteLine(&#8220;{0:#%}&#8220;, i);
Console.WriteLine();
Console.WriteLine(&#8220;{0:0,.}&#8220;, i);
Console.WriteLine(&#8220;{0:#0}&#8220;, i);
Console.WriteLine(&#8220;{0:#0;(#0)}&#8220;, i);
Console.WriteLine(&#8220;{0:#0;(#0);&zero&}&#8220;, i); // &zero&
Console.WriteLine(&#8220;{0:#%}&#8220;, i);
4 数字字符串的解析
所有的基础类型都有ToString方法,它是从object类型中继承过来的。所有的数值类型都有Parse方法,它用字符串为参数,并且返回相等的数值。比如
public class NumParsingApp
public static void Main(string[] args)
int i = int.Parse(&#8220;12345&#8220;);
Console.WriteLine(&#8220;i = {0}&#8220;, i);
int j = Int32.Parse(&#8220;12345&#8220;);
Console.WriteLine(&#8220;j = {0}&#8220;, j);
double d = Double.Parse(&#8220;1.2345E+6&#8220;);
Console.WriteLine(&#8220;d = {0:F}&#8220;, d);
string s = i.ToString();
Console.WriteLine(&#8220;s = {0}&#8220;, s);
在缺省状况下,某些非数字字符是可以存在的。比如开头和结尾的空白。逗号和小数点,加号和减号,因此,下面的Parse语句是一样的
string t = &#8220;
-1,234,567.890
//double g = double.Parse(t);
// 和下面的代码干同样的事情
double g = double.Parse(t,
NumberStyles.AllowLeadingSign |
NumberStyles.AllowDecimalPoint |
NumberStyles.AllowThousands |
NumberStyles.AllowLeadingWhite |
NumberStyles.AllowTrailingWhite);
Console.WriteLine(&#8220;g = {0:F}&#8220;, g);
输出都是这样
注意到,如果你要使用NumberStyles,就要添加对System.Globalization的引用,然后就可以使用不同NumberStyles的组合或者其中的任意一种。如果你想兼容货币符号,就需要使用重载的Parse方法,它们采用了NumberFormatInfo对象作为一个参数,然后你可以设置NumberFormatInfo的CurrencySymbol属性来调用Parse方法,比如:
string u = &#8220;¥
-1,234,567.890
NumberFormatInfo ni = new NumberFormatInfo();
ni.CurrencySymbol = &#8220;¥&#8220;;
double h = Double.Parse(u, NumberStyles.Any, ni);
Console.WriteLine(&#8220;h = {0:F}&#8220;, h);
上面的代码有如下输出
除了NumberFormatInfo,还可以使用CultureInfo类。CultureInfo代表了某种特定的文化,包括文化的名字,书写的方式,日历的格式。对于某种特定文化的操作是非常普遍的情况,比如格式化日期和排序。文化的命名方式遵从RFC1766标准,使用&语言代码2&-&国家/地区码2&的方式,其中的&语言代码2&是两个小写的字母,它们来自ISO639-1;&国家/地区码2&是两个大写字母,它们来自ISO3166。比如,美国英语是“en-US&#8221;。英国英语是&#8221;en-GB&#8221;。特立尼达和多巴哥英语是&#8221;en-TT&#8221;。例如,我们可以创建一个美国英语的CultureInfo对象并且基于这种文化将数字转换成字符串。
int k = 12345;
CultureInfo us = new CultureInfo(&#8220;en-US&#8220;);
string v = k.ToString(&#8220;c&#8220;, us);
Console.WriteLine(v);
$12,345.00
要注意到,我们使用了重载的ToString方法,它把第一个格式化字符串当成第一个参数,将一个CultureInfo对象(执行了IFormatProvider对象)作为第二个参数。这儿有第二个例子,对于丹麦人来说:
CultureInfo dk = new CultureInfo(&#8220;da-DK&#8220;);
string w = k.ToString(&#8220;c&#8220;, dk);
Console.WriteLine(w);
kr 12.345,00
5 字符串和日期
一个日期对象有个叫Ticks的属性。它存储了自从公元1年的1月1号上午12点开始的,以100纳秒为间隔的时间。比如,Ticks值等于00000L表示公元100年,星期五,1月1号,上午12点这一时间。Ticks总是以100纳秒为间隔递增。
DateTime的值以存储在DateTimeFormatInfo实例里面的标准或者自定义的方式来表示。为了修改一个日期显示的方式,DateTimeFormatInfo实例必须要是可写的,以便我们写入自定义的格式并且存入属性中
using System.G
public class DatesApp
public static void Main(string[] args)
DateTime dt = DateTime.N
Console.WriteLine(dt);
Console.WriteLine(&#8220;date = {0}, time = {1}\n&#8220;,
dt.Date, dt.TimeOfDay);
代码会产生下面的输出
23/06/2001 17:55:10
date = 23/06/2001 00:00:00, time = 17:55:10.3839296
下表列出了标准的格式字符串以及相关的DateTimeFormatInfo属性
MM/dd/yyyy
ShortDatePattern(短日期模式)
dddd,MMMM dd,yyyy
LongDatePattern(长日期模式)
dddd,MMMM dd,yyyy HH:mm
Full date and time (long date and short time)(全日期和时间模式)
dddd,MMMM dd,yyyy HH:mm:ss
FullDateTimePattern (long date and long time)(长日期和长时间)
MM/dd/yyyy HH:mm
General (short date and short time)(通用模式,短日期和短时间)
MM/dd/yyyy HH:mm:ss
General (short date and long time)(通用模式,短日期和长时间)
MonthDayPattern(月天模式)
ddd,dd MMM yyyy,HH':&#8217;mm':&#8217;ss &#8216;GMT&#8217;
RFC1123Pattern (RFC1123模式)
yyyy-MM-dd HH:mm:ss
SortableDateTimePattern (conforms to ISO 8601) using local time(使用本地时间的可排序模式)
ShortTimePattern (短时间模式)
LongTimePattern(长时间模式)
yyyy-MM-dd HH:mm:ss
UniversalSortable-DateTimePattern (conforms to ISO 8601) using universal time(通用可排序模式)
dddd,MMMM dd,yyyy,HH:mm:ss
UniversalSortable-DateTimePattern(通用可排序模式)
YearMonthPattern(年月模式)
DateTimeFormatInfo.InvariantInfo属性得到了默认的只读的DateTimeFormatInfo实例,它与文化无关。你可以创建自定义的模式。要注意到的是InvariantInfo不一定和本地的格式一样。Invariant等于美国格式。另外,如果你向DateTime.Format方法传递的第二个参数是null,DateTimeFormatInfo将会是默认的CurrentInfo。比如
Console.WriteLine(dt.ToString(&#8220;d&#8220;, dtfi));
Console.WriteLine(dt.ToString(&#8220;d&#8220;, null));
Console.WriteLine();
06/23/2001
23/06/2001
对比选择InvariantInfo和CurrentInfo的。
DateTimeFormatI
Console.Write(&#8220;[I]nvariant or [C]urrent Info?: &#8220;);
if (Console.Read() == &#8216;I&#8216;)
dtfi = DateTimeFormatInfo.InvariantI
dtfi = DateTimeFormatInfo.CurrentI
DateTimeFormatInfo dtfi = DateTimeFormatInfo.InvariantI
Console.WriteLine(dt.ToString(&#8220;D&#8220;, dtfi));
Console.WriteLine(dt.ToString(&#8220;f&#8220;, dtfi));
Console.WriteLine(dt.ToString(&#8220;F&#8220;, dtfi));
Console.WriteLine(dt.ToString(&#8220;g&#8220;, dtfi));
Console.WriteLine(dt.ToString(&#8220;G&#8220;, dtfi));
Console.WriteLine(dt.ToString(&#8220;m&#8220;, dtfi));
Console.WriteLine(dt.ToString(&#8220;r&#8220;, dtfi));
Console.WriteLine(dt.ToString(&#8220;s&#8220;, dtfi));
Console.WriteLine(dt.ToString(&#8220;t&#8220;, dtfi));
Console.WriteLine(dt.ToString(&#8220;T&#8220;, dtfi));
Console.WriteLine(dt.ToString(&#8220;u&#8220;, dtfi));
Console.WriteLine(dt.ToString(&#8220;U&#8220;, dtfi));
Console.WriteLine(dt.ToString(&#8220;d&#8220;, dtfi));
Console.WriteLine(dt.ToString(&#8220;y&#8220;, dtfi));
Console.WriteLine(dt.ToString(&#8220;dd-MMM-yy&#8220;, dtfi));
[I]nvariant or [C]urrent Info?: I
01/03/2002
03/01/2002Thursday, 03 January 2002
Thursday, 03 January
Thursday, 03 January :03
January 03
Thu, 03 Jan :03 GMT
Thursday, 03 January :03
01/03/2002
2002 January
[I]nvariant or [C]urrent Info?: C
03/01/2002
03/01/2002
03 January 2002
03 January
03 January :47
03 January
Thu, 03 Jan :47 GMT
03 January :47
03/01/2002
January 2002
/******************************************************************************************
*【Author】:flyingbread
*【Date】:日
*【Notice】:
*1、本文为原创技术文章,首发博客园个人站点(),转载和引用请注明作者及出处。
*2、本文必须全文转载和引用,任何组织和个人未授权不能修改任何内容,并且未授权不可用于商业。
*3、本声明为文章一部分,转载和引用必须包括在原文中。
******************************************************************************************/
本文出自 蓝天笔记,转载时请注明出处及相应链接。本文永久链接: /archives/95
&#404;回顶部

我要回帖

更多关于 数组变成字符串 的文章

 

随机推荐