• String类的基本用法与注意点,StringBuffer类的用法


    package cn.hncu.day8;

    public class RegExpDemo {
    public static void main(String[] args) {
    String str ="011-12345678";
    boolean boo = str.matches("0\d{2}-\d{8}");
    System.out.println(boo);//true
    str ="110-12345678";
    boo = str.matches("0\d{2}-\d{8}");
    System.out.println(boo);//false

    str ="dsÕÅdsjksdj·ásaa";
    boo = str.matches(".*ÕÅ.*·á.*");//ÕÅdsjksdj·á
    System.out.println(boo);//false


    }
    }

    这个地发关于字符串的匹配,可以去百度上搜索例如:

    w  匹配数字,字母,下划线

      以开头或结尾

    d  数字

    ^  匹配开始

    $  匹配结束

    {n}  重复N次

    /内容/  构成一个不区分大小写的正则表达式

    ----------------------------------------------------------

    package cn.hncu.day8;

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    public class RegExpDemo2 {
    public static void main(String[] args) {
    String str ="011-12345678";
    Pattern p = Pattern.compile("0\d{2}-\d{8}");//p--可以理解成正则表达式的工具
    Matcher m = p.matcher(str);//m--可以理解成匹配结果的封装体
    boolean boo = m.matches();//读取匹配结果信息
    System.out.println(boo);
    }
    }

    --------------------------------------------------------------------------

    package cn.hncu.day6;

    import java.io.UnsupportedEncodingException;

    public class StringDemo {

    public static void main(String[] args) {
    System.out.println("========1演示format()方法=========");
    String str;
    for(int i=1;i<10;i++){
    str = String.format("hncujava-%3d", i);//这里相当于C里面的printf("%3s", );
    System.out.println(str);
    }
    System.out.println("========2=========");
    // 2、输出String s =“1234567”的长度,第3个字符,字节个数
    String s="1234567";
    System.out.println("长度:"+ s.length() ); //7
    System.out.println("第3个字符:"+ s.charAt(2) );//3
    System.out.println("字节个数:"+ s.getBytes().length);//7

    System.out.println("========3=========");
    //3、输出s=“1234567中"的长度,第3个字符,字节个数
    s="1234567中";
    System.out.println("长度:"+ s.length() ); //8
    System.out.println("第3个字符:"+ s.charAt(2) );//3
    System.out.println("字节个数:"+ s.getBytes().length);//GBK=9 UTF-8=10

    System.out.println("========4=========");
    //4、判断某段字符是否含有汉字(假定只有中英文字符)
    s ="jj中kks我w你ew";
    if(s.getBytes().length==s.length()){
    System.out.println(s+"---没有汉字");
    }else{
    System.out.println(s+"---有汉字,个数为:"+ (s.getBytes().length-s.length()) );
    }

    System.out.println("========5=========");
    //5、分别输出一个字符串中的中文字符、英文字母、数字
    s ="jj中kk3d我s0w4w";
    char cs[] = s.toCharArray();
    for(char c: cs){
    if((""+c).getBytes().length > (""+c).length() ){
    System.out.println("汉字:"+c);
    }else if(c>='a'&&c<='z' || c>='A'&&c<='Z'){
    System.out.println("英文字母:"+c);
    }else if(c>='0'&&c<='9'){
    System.out.println("数字:"+c);
    }
    }

    System.out.println("========6=========");
    //6 演示编码问题
    s="1234567中";
    try {
    //以指定编码的方式来获取字符串中的字节数组
    System.out.println(s.getBytes("UTF-8").length);
    byte bytes[] = "中国wqqew我".getBytes("UTF-8");
    String ss1 = new String(bytes);//使用平台的默认码表,如果默认是gbk则乱码,如果默认是utf-8则ok
    System.out.println(ss1);
    String ss2 = new String(bytes,"gbk");//指定码表,乱码----因为解码表和编码表不同
    System.out.println(ss2);
    String ss3 = new String(bytes,"utf-8");//指定码表,ok----因为解码表和编码表一致
    System.out.println(ss3);

    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    }

    }

    }

    ---------------------------------------------------------------------------------

    package cn.hncu.day6;

    import java.io.UnsupportedEncodingException;

    public class StringDemo2 {

    public static void main(String[] args) {
    System.out.println("========1=========");
    // 1、字符串比较大小
    String str1 = "1234567中hw";//48--'0' 51--'3'
    String str2 = "12hello";//97--'a' 104--'h'
    //System.out.println( str1>str2 );//错,只有基本数据类型才能使用“>”
    System.out.println( str1.compareTo(str2) );//依次把两个字符串的每个字符进行相减,只要出现一个字符不相等,就把这两个字符相减的结果作为整个函数的返回值---小于0代表str1更小,大于0代表str1更大,等于0则str1与str2相等

    System.out.println("========2=========");
    // 2、子串位置查找
    String s="he";
    System.out.println( str1.indexOf(s) );//-1,代表str1中不存在子串s
    System.out.println( str2.indexOf(s) );//2,代表子串s在str2中的位置从第2个字符处开始

    System.out.println("========3=========");
    // 3、查找姓名中带“飞”字的人
    String[] names={"张三","李四","张飞","张三飞","李四飞","飞飞张","叶飞燕","小张"};
    String s1="飞";
    for(String name: names){
    if(name.indexOf(s1)>=0){
    System.out.print(name+" ");
    }
    }
    System.out.println();

    //查找姓“张”的人
    //法1
    String s2="张";
    for(String name: names){
    if(name.indexOf(s2)==0){
    System.out.print(name+" ");
    }
    }
    System.out.println();
    //法2
    for(String name: names){
    if(name.startsWith(s2)){
    System.out.print(name+" ");
    }
    }
    System.out.println();

    System.out.println("========4=========");
    // 4、查找扩展名为“.java”的文件名。
    String[] fileNames={"aa.java","a.java.c","ba.c.java","we.txt","java.js","1.java"};
    String s3=".java";
    for(String fileName:fileNames){
    if(fileName.endsWith(s3)){
    System.out.print(fileName+" ");
    }
    }
    System.out.println();

    System.out.println("========5=========");
    //5 练习substring
    String str3="welcome you!";
    System.out.println(str3.substring(3));//come you!
    System.out.println(str3.substring(2,4));//lc---规范:凡是取某个区间范围的,都是:左包含右不包含

    System.out.println("========6=========");
    //equals和equalsIgnoreCase()
    String str4="Welcome You!";
    System.out.println(str3.equals(str4));//false
    System.out.println(str3.equalsIgnoreCase(str4));//true

    System.out.println("========7=========");
    //※注意※----凡是对String变量进行处理的方法,处理结果都是以新的字符串返回出来的(因此我们要手动去接返回结果),原来的字符串变量是没有变化的!---该思想与我们之前讲的String变量作为方法的参数时,用法和基本数据类型相同即是值传递---思想是一致的!
    String ss1= str4.toUpperCase();
    System.out.println(str4);//Welcome You!--旧的
    System.out.println(ss1);//我们想要的结果
    String ss2 = str4.replace('o', '6');
    System.out.println(str4);//Welcome You!--旧的
    System.out.println(ss2);//我们想要的结果

    System.out.println("========8=========");
    // 8、用户信息的包装与拆解
    String userInfo="hncu,1234,13612345678";
    String strs[] = userInfo.split(",");
    User user = new User();
    user.setName(strs[0]);
    user.setPwd(strs[1]);
    user.setTel(strs[2]);
    System.out.println(user);

    String str5 = "aa,bb,cc,a1 b2 dd";
    String strs2[] = str5.split(",| +");
    for(String str: strs2){
    System.out.println(str);
    }

    System.out.println("----------------");
    String str6 = "aa|bb|cc|a1|b2.dd";
    //法1
    String strs3[] = str6.split("\.|\|");//如果是正则表达式中有特殊含义的字符作为分隔符,那么得进行转义
    for(String str: strs3){
    System.out.println(str);// \t
    }

    System.out.println("--------+--------");
    //法2
    String str7 = str6.replace("|", ",");
    str7 = str7.replace(".", ",");
    String strs4[] = str7.split(",");
    for(String str: strs4){
    System.out.println(str);// \t
    }

    System.out.println("========8=========");
    // 9、用户数据后台校验前的过滤
    String str9=" dsjsdjksd dskkds ";
    String ss9 = str9.trim();
    System.out.println(str9);//旧的
    System.out.println(ss9);//我们想要的结果

    }

    }

    class User{
    private String name;
    private String pwd;
    private String tel;
    public User(String name, String pwd, String tel) {
    super();
    this.name = name;
    this.pwd = pwd;
    this.tel = tel;
    }

    public User() {
    super();
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public String getPwd() {
    return pwd;
    }

    public void setPwd(String pwd) {
    this.pwd = pwd;
    }

    public String getTel() {
    return tel;
    }

    public void setTel(String tel) {
    this.tel = tel;
    }

    @Override
    public String toString() {
    return "User [name=" + name + ", pwd=" + pwd + ", tel=" + tel + "]";
    }
    }

    -----------------------------------------------------------------------------------------

    package cn.hncu.day8;

    public class StringBufferDemo2 {

    public static void main(String[] args) {
    String str = new String("java");
    strReplace(str);
    System.out.println(str);//不变

    StringBuffer sb = new StringBuffer("java");
    sbReplace(sb);
    System.out.println(sb.toString());//变
    }

    private static void sbReplace(StringBuffer sb) {//参数用法同:引用类型---引用传递
    sb.append("EE");
    }

    private static void strReplace(String str) {//参数用法同:基本数据---值传递
    str = str.replaceAll("j", "i");
    }

    }StringBuffer是多线程安全的,而StringBuilder不是线程安全的,StringBuffer类略微会快一些;

  • 相关阅读:
    LLVM 0: LLVM和Clang的背景
    semaphore和mutex的区别?
    Note: TWLKH: 浅谈Semaphore与mutex
    Bark:自建 iOS 消息推送服务
    aka.ms打不开
    《UNIX 传奇:历史与回忆》Note
    crawlab 实现批量添加爬虫的功能
    手机浏览器打开PC端网站,背景显示不全怎么办?
    jquery实现平滑的二级下拉菜单效果
    nginx服务器设置301重定向,不带www跳转到带www域名
  • 原文地址:https://www.cnblogs.com/1314wamm/p/5600179.html
Copyright © 2020-2023  润新知