




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/这的方法是String(对象,索引,长度,格式)Char a=s,t,u,d,e,n,t;String s=new String(a,2,5,”w2.w2,3”); /这里是搜索字符的索引 /返回索引所对应的字符,这里返回的是char类型。这里返回的类型是char 如:char b=str.charAt(10); 这里在的10是索引。 /字的截取,结果:hel/去除空格String s1= Im studying! ;System.out.println(n+s1.length();System.out.println(s1.trim().length();结果:24 13/字符串替换如: /判断字符串的开始与结尾和位置用与判断位置(索引) str.indexOf();如:str.indexOf(“j”) 这就是判断str中的j的位置。没有的话则返回负数。/ /判断字符串是否相等 boolean g1,g2,g3,g4; String f1=abc; String f2=ABC; String f3=abc; /运用equals()来进行比较区分大小写。这里的结果是false,true. g1=f1.equals(f2); g2=f1.equalsIgnoreCase(f2); System.out.println(n+g1+t+g2); /运用equalsI来进行比较不区分大小写,这里的结果是true,true. g3=f1.equalsIgnoreCase(f2); g4=f1.equalsIgnoreCase(f3); System.out.println(g3+t+g4);/按字典的顺序比较两个字符串字典顺序:数字,大写子母,小写子母。也就是说compareTo区分大小写 String h1=ab; String h2=bc; String h3=cd; int k1=pareTo(h2); int k2=pareTo(h1); System.out.println(n+h1+comparaTo+h2+结果为+k1); System.out.println(h3+comparaTo+h1+结果为+k2);结果: h1 comparaTo h2结果为-1 h3 comparaTo h1结果为2/相差几结果就是几,只有在一样的时候是0;/字母大小写转换 String m1=abc DEF; String m2=m1.toLowerCase(); String m3=m1.toUpperCase(); System.out.println(n+m2+n+m3);结果:abc def ABC DEFsplit String n1=a,b,c,d,e; String n2=n1.split(,); String n3=n1.split(,3); /后面的3表示分成多少个元素; System.out.println(); for(int i=0;in2.length;i+) System.out.println(n2+i+=+n2i); for(int j=0;jn3.length;j+) System.out.println(n3+j+=+n3j);结果:n20=a n21=b n22=c n23=d n24=e n30=a n31=b n32=c,d,e 这里的结果都是字符串,如果是一种字符要用:如”aaaa(bbbb)”.split(“(”);这是根据“(”来拆分的。StringBuilder:结果虽然一样,可以上面的方法用时少。因为StringBuilder的容量默认为16,要想放进去更多,则要说明,如:StringBuilder builder=new StringBuilder(100); 此时容量就成了100。str.append()对象。append()str.insert(),上面intsert也错了,是insert。对象。insert()正则表达式:看新书5.6/*3.使用正则表达式来判断字符串text是否为合法的手机号。a:import java.util.Scanner;public class Exercise6_3 public void get()Scanner input=new Scanner(System.in);String phone=pDigit11; /phone是正则表达式,String text=input.next();/这是输入值boolean a=text.matches(phone); /matchse()是格式对表的一种方法;返回的是boolean值。if(a)System.out.println(text+是合法的手机号);elseSystem.out.println(text+不是合法的手机号);public static void main(String args) new Exercise6_3().get();b:public class test1 public void get1()Scanner s=new Scanner(System.in);String t=1358d9;Boolean b=s.next().matches(t);System.out.println(b);public static void main(String args) new test1().get1();例:import java.util.Date;public class lixiString /* * param args */public static void main(String args) String s=new String(what do you think?); /这里是搜索字符的索引 int size=s.lastIndexOf(d); System.out.println(size+t+s.length(); /返回索引size所对应的字符,这里要用char类型。 char b=s.charAt(size); System.out.println(n+b); /字的截取, String c=s.substring(5); String d=s.substring(5,7); System.out.println(n+c+n+d); /去除空格 String s1= Im studying! ; System.out.println(n+s1.length(); System.out.println(s1.trim().length(); /字符串替换 String s2=new String(you are bige.); String s22=new String(you are are bige.);/出现两个一样的, System.out.println(n+s2); String s3=s2.replace(are, have); String s33=s22.replace(are, have);/会把出现的都换了,这里的s22是要换的的字符串。 System.out.println(s3+n+s33); /判断字符串的开始与结尾 boolean b1,b2,b3,b4; String e1=0132565689; String e2=45765543232; b1=e1.startsWith(01); b2=e1.endsWith(32); b3=e2.startsWith(01); b4=e2.endsWith(32); System.out.println(n+e1是以01开头的吗? +b1); System.out.println(e1是以32结尾的吗? +b2); System.out.println(e2是以01开头的吗? +b3); System.out.println(e2是以32开头的吗? +b4); /判断字符串是否相等 boolean g1,g2,g3,g4; String f1=abc; String f2=ABC; String f3=abc; /运用equals()来进行比较区分大小写。这里的结果是false,true. g1=f1.equals(f2); g2=f1.equalsIgnoreCase(f2); System.out.println(n+g1+t+g2); /运用equalsI来进行比较不区分大小写,这里的结果是true,true. g3=f1.equalsIgnoreCase(f2); g4=f1.equalsIgnoreCase(f3); System.out.println(g3+t+g4); /按字典的顺序比较两个字符串,字典顺序:数字,大写子母,小写子母。 String h1=ab; String h2=bc; String h3=cd; int k1=pareTo(h2); int k2=pareTo(h1); System.out.println(n+h1 comparaTo h2+结果为+k1); System.out.println(h3 comparaTo h1+结果为+k2); /字母大小写转换 String m1=abc DEF; String m2=m1.toLowerCase(); String m3=m1.toUpperCase(); System.out.println(n+m2+n+m3); /字符串分割 String n1=a,b,c,d,e; String n2=n1.split(,); String n3=n1.split(,3); /后面的3表示分成多少个元素; System.out.println(); for(int i=0;in2.length;i+) System.out.println(n2+i+=+n2i); for(int j=0;jn3.length;j+) System.out.println(n3+j+=+n3j); /format格式化 /format日期格式化 /年月日 Date format1=new Date(); String year=String.format(%tY, format1); String month=String.format(%tm, format1); String day=String.format(%td, format1); System.out.println(n+year+年+month+月+day+日); /小时分钟秒 Date format2=new Date(); String hour=String.format(%tk,format2); String minute=String.format(%tM,format2); String second=String.format(%tS, format2); System.out.println(n+hour+时+minute+分+second+秒);字符串转换:valueOf()Float a=12.34f;String s=String.valueOf(a); /转换成字符串,什么类型都可以转换成字符串。float b=Float.parseFloat(s); /转换成单精度。int c=Integer.parseInt(s); /转换成整形。StringBuffer 的方法中的追加append()后,要用.toString成字符串才能输出?其实不用也行。String.format(“”,string);1. Calendarc=Calendar.getInstance();2. Strings=String.format(今天是:%1$tY年%1$tm月%1$te日,c);Calendar c = Calendar.getInstance();String s = String.format(今天是:%1$tY年%1$tm月%1$te日, c);此格式字符串是 format 方法的第一个参数。它包含三个格式说明符 %1$tm、%1$te 和 %1$tY,它们指出应该如何处理参数以及在文本的什么地方插入它们。格式字符串的其余部分是固定文本。 参数列表由传递给位于格式字符串之后的方法的所有参数组成。在上述示例中,参数列表的大小为 1,由对象 Calendar c 组成。String乱码:postHeadName = new String(postHeadName.getBytes(ISO8859-1),UTF-8);Sunshine的String.getBytes()和newString() 在Java中,String.getBytes(Stringdecode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示,如byteb_gbk=中.getBytes(GBK);byteb_utf8=中.getBytes(UTF-8); byteb_iso88591=中.getBytes(ISO8859-1);byteb_unicode=中.getBytes(unicode); 将分别返回“中”这个汉字在GBK、UTF-8和ISO8859-1编码下的byte数组表示,此时b_gbk的长度为2,b_utf8的长度为3,b_iso88591的长度为1,b_unicode的长度为4(系统的的unicode采用的是big-endian就是前面是两个字节来表示这个的,unicode采用的都是两个字节编码,所以后面是4个字节)。 而与getBytes相对的,可以通过newString(byte,decode)的方式来还原这个“中”字时,这个newString(byte,decode)实际是使用decode指定的编码来将byte解析成字符串。Strings_gbk=newString(b_gbk,GBK);Strings_utf8=newString(b_utf8,UTF-8); Strings_iso88591=newString(b_iso88591,ISO8859-1); 通过打印s_gbk、s_utf8和s_iso88591,会发现,s_gbk和s_utf8都是“中”,而只有s_iso88591是一个不认识的字符,为什么使用ISO8859-1编码再组合之后,无法还原“中”字呢,其实原因很简单,因为ISO8859-1编码的编码表中,根本就没有包含汉字字符,当然也就无法通过中.getBytes(ISO8859-1);来得到正确的“中”字在ISO8859-1中的编码值了,所以再通过newString()来还原就无从谈起了。 因此,通过String.getBytes(String decode)方 法 来 得 到 byte时,一定要确定decode的编码表中确实存在String表示的码值,这样得到的byte数组才能正确被还原。 有时候,为了让中文字符适应某些特殊要求(如httpheader头要求其内容必须为iso8859-1 编码),可能会通过将中文字符按照字节方式来编码的情况,如 Strings_iso88591=newString(中.getBytes(UTF-8),ISO8859-1),这样得到的s_iso8859-1字符串实际是三个在ISO8859-1中的字符,在将这些字符传递到目的地后,目的地程序再通过相反的方式Strings_utf8=new String(s_iso88591.getBytes(ISO8859-1),UTF-8)来得到正确的中文汉字“中”。这样就既保证了遵守协议规定、也支持中文。 String的getBytes()方法是得到一个字串的字节数组,这是众所周知的。但特别要注意的是,本方法将返回该操作系统默认的编码格式的字节数组。如果你在使用这个方法时不考虑到这一点,你会发现在一个平台上运行良好的系统,放到另外一台机器后会产生意想不到的问题。比如下面的程序,classTestCharsetpublicstaticvoidmain(Stringargs)newTestCharset().execute();privatevoidexecute()Strings=Hello!你好!;bytebytes=s.getBytes();System.out.println(byteslenghtis:+bytes.length);在一个中文WindowsXP系统下,运行时,结果为:byteslenghtis:12但是如果放到了一个英文的UNIX环境下运行:$javaTestCharsetbyteslenghtis:9 如果你的程序依赖于该结果,将在后续操作中引起问题。为什么在一个系统中结果为12,而在另外一个却变成了9了呢?上面已经提到了,该方法是和平台(编码)相关的。在中文操作系统中,getBytes方法返回的是一个GBK或者 GB2312的中文编码的字节数组,其中中文字符,各占两个字节。而在英文平台中,一般的默认编码是“ISO-8859-1”,每个字符都只取一个字节(而不管是否非拉丁字符)。Java中的编码支持Java是支持多国编码的,在Java中,字符都是以Unicode进行存储的,比如,“你”字的Unicode编码是“4f60”,我们可以通过下面的实验代码来验证:classTestCharsetpublicstaticvoidmain(Stringargs)charc=你;inti=c;System.out.println(c);System.out.println(i);不管你在任何平台上执行,都会有相同的输出:-output-你20320 20320就是Unicode4f60”的整数值。其实,你可以反编译上面的类,可以发现在生成的.class文件中字符“你”(或者其它任何中文字串)本身就是以Unicode编码进行存储的:charc=u4F60;.即使你知道了编码的编码格式,比如:javac-encodingGBKTestCharset.java 编译后生成的.class文件中仍然是以Unicode格式存储中文字符或字符串的。使用String.getBytes(Stringcharset)方法 所以,为了避免这种问题,我建议大家都在编码中使用String.getBytes(Stringcharset)方法。下面我们将从字串分别提取ISO-8859-1和GBK两种编码格式的字节数组,看看会有什么结果:classTestCharsetpublicstaticvoidmain(Stringargs)new TestCharset().execute();privatevoidexecute()Strings=Hello!你好!;bytebytesISO8859=null;bytebytesGBK=null;trybytesISO8859=s.getBytes(iso-8859-1);bytesGBK=s.getBytes(GBK);catch(java.io.UnsupportedEncodingExceptione)e.printStackTrace();System.out.println(-n8859bytes:);System.out.println(bytesis:”+arrayToString(bytesISO8859);System.out.println(hexformatis:+ encodeHex(bytesISO88
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云南“美美与共”民族中学联盟联考(一)高二物理-答案
- 陕西省延安市富县2024-2025学年八年级(下)期末物理试卷(含答案)
- 代为办理退休手续协议5篇
- 广东省惠州市惠阳区第四中学2025-2026学年八年级上学期9月月考地理试卷(含答案)
- 安徽省阜阳市临泉田家炳实验中学(临泉县教师进修学校)2025-2026学年高二上学期9月月考历史试题(含答案)
- 2025-2026学年河北省石家庄市桥西区联邦外国语学校八年级(上)开学数学试卷(含部分答案)
- 印刷厂产品质量抽检办法
- 艺术留学咨询申请方案
- 购房销售合同5篇
- 手卫生操作培训课件
- 2025至2030全球及中国护理教育行业项目调研及市场前景预测评估报告
- 培训课件的字体版权
- 注塑加工项目可行性研究报告
- 中医治未病课件版
- 痛风中医辨证论治课件
- 【课件】工作危害分析法(JHA)专项培训课件丨
- 2025-2030年中国礼品盒行业市场现状供需分析及投资评估规划分析研究报告
- 带储热的液态空气储能系统性能的多维度剖析与优化策略
- 水体环境完整版本
- 新北师大版四年级数学上册第二单元(线与角)课后练习题及答案1
- DB1311T 091-2025 旧水泥混凝土路面多锤头碎石化施工技术规范
评论
0/150
提交评论