String、char、正则表达式的用法及实例

来源:互联网 发布:怎么注册淘宝秒杀群 编辑:程序博客网 时间:2024/04/26 02:47
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


/**
 * Created by Administrator on 2017/5/16.
 */
public class JavaStringExam {
    public static void main(String[] args) {
        //String 常用方法
        //1、创建String对象
        String a = new String();  //""
        String b = "";
        String c =new String("");


        //2. 字符串编码转换, 编码转换不可逆,
        String s = "离开家练练";
        try {
            //gbk简体  gb2312简体繁体更丰富
            String encodedS =  new String(s.getBytes(),"gb2312");
            System.out.println(encodedS);
        } catch (UnsupportedEncodingException e) {


        }
        //3. 字符串和char[]
        String cha = "123456"; //字符串就是char[]
        char[] charArr = cha.toCharArray(); //字符串直接转char数组
        String charToString = new String(charArr); //char数组转字符串
        System.out.println(charToString);


        //4. 字符串常用方法
        String str = "1".concat(".").concat("1");   //concat  拼接字符串 和  + 相同用法
        String str1 = "1"+"."+"1";
        //replace 原char换新char
        String str2 = "1  101/a/".replace("/","(");// ?0次1次  + 1次或多次  *N次   {1}匹配固定次数
        String str3 = "1  101.a.".replaceFirst("\\.",""); //正则表达式替换   \任意字符, 匹配一个任意字符
        String str4 = "1  101\\a\\".replaceAll("\\\\",""); //  正则表达式中" \\" 代表一个"\"


        char strCharAt = "456".charAt(0);
        System.out.println(strCharAt);
        // 1  左比右大
        // 0 相等
        // -1 左比右小   97   98     compareTo每一位字符转ascII码,每一位都比较完结果就是compareTo的结果
        int compareResult = "a".compareTo("b");  //String实现了Compareable接口, String的compareTo按照ascII码比较
        System.out.println(compareResult);


        //内容处理
       boolean isStartA =  "a123".startsWith("a1"); //什么字符开始
       boolean isUrl =  "baidu.com".endsWith(".com");
      String url =   "http://www.baidu.com";
      boolean hasWWW =  url.contains("www"); //判断字符串中是否包含www
        //网址判断
        if(url.contains("www")&&url.startsWith("http:")&&(url.endsWith(".com")||url.endsWith(".cn")||url.endsWith(".net"))){


        }
        //用户登录。 "ABC123"
        if("ABC123".equalsIgnoreCase("abc123")){
            //忽略大小写比较字符串内容
            System.out.println("字符串相等");
        }
       String abc =  "ABC123".toLowerCase(); //字符串转小写
       String upABC= "abc123".toUpperCase();//字符串转大写


        //indexOf字符串查找
        //没找到结果 -1
        if("acda".indexOf("a")>-1){
            //判断字符在字符串中的位置,从左向右找,找第一次出现位置
            System.out.println("acda".indexOf("a"));
        }
        if("acda".lastIndexOf("a")>-1){ //从右向左找。找到一个目标就不继续查找
            System.out.println("acda".lastIndexOf("a"));
        }


        //isEmpty length()>0判断字符串非空
        if(!"123123".isEmpty()){
            System.out.println("非空");
        }
        if("123".length()>0){
            System.out.println("非空");
        }
        //字符串的裁剪拼接
        //substring 重载方法1  传截取开始位置
        String aa = "在计算机中,所有的数据在存储和运算时都要使用二进制数表示";
        String subResult =   aa.substring(aa.indexOf(",")+1);
        //所有的数据在存储和运算时都要使用二进制数表示
        System.out.println(subResult);
        //substring  两个参数时, 截取结果。 前面要,后面不要, 第一个参数位置返回,第二个参数位置不会返回
       String subResult1 = aa.substring(0,aa.indexOf(","));
        System.out.println(subResult1);
        //字符串的拆分
        String lstr = "1|2|3|4|5";//按| 拆分   每看到一个|  就把|前面字符放数组中
      String[]  strs =   lstr.split("\\|"); //   |  在正则表达式中表示  或
        System.out.println(Arrays.toString(strs));


        //字符串格式化, 数据库读取的字符串,可能有很多空格
        String  trimed =  "   sfd   sdf     ".trim(); //格式化字符串,去掉字符串左右空格
        System.out.println(trimed);


        //正则表达式处理
        //正则表达式验证
        String userNameRegex =  "[A-Za-z0-9_\\-\\u4e00-\\u9fa5]{6,16}";
        String userName = "水电费123";
        boolean isMatch = Pattern.matches(userNameRegex,userName);  //判断userName是否被 正则匹配
        if(isMatch){
            System.out.println("用户名符合要求");
        }
       //正则表达式截取
        String  web = "<dl>\n" +
                "\t\t<dt>小托马斯地表最强</dt>\n" +
                "\t\t<dd>http://n.sinaimg.cn/sports/2_img/upload/cf0d0fdd/20170516/d26_-fyfeutq0578202.jpg</dd>\n" +
                "        \t\t<dd>http://www.sinaimg.cn/dy/slidenews/2_t160/</dd>\n" +
                "\t\t<dd>http://www.sinaimg.cn/dy/slidenews/2_t50/</dd>\n" +
                "\t\t<dd>2017年05月16日 11:02</dd>\n" +
                "\t\t<dd>北京时间5月16日,奇才与凯尔特人的系列赛进入抢七,结果凯尔特人115比105力克奇才,从而以总比分4比3淘汰凯尔特人晋级东部决赛;小托马斯29分12助攻,凯利-奥利尼克26分,约翰-沃尔18分11助攻,布拉德利-比尔38分。</dd>\n" +
                "\t\t<dd><a href=\"http://comment5.news.sina.com.cn/comment/skin/default.html?channel=ty&newsid=slidenews-786-2144983\">评论</a></dd>\n" +
                "        \t\t<dd>2144983</dd>\n" +
                "\t</dl>";
        String regex ="<dl>\\s*<dt>[\\W\\w]*</dt>\\s*<dd>([\\W\\w]*)</dd>\\s*</dl>";
       if(Pattern.matches(regex,web)) {
           //正确匹配的处理
           //创建Matcher对象  Matcher匹配器    Pattern正则表达式对象
           Matcher matcher = Pattern.compile(regex).matcher(web);
           if (matcher.find()) { //能找到 正则表达式中 ()匹配的结果  ()一个分组
               String webContent = matcher.group(1);
               System.out.println(webContent);
           }
       }
    }
}