• Java——字符串


    1、不可变的String

      String对象是不可变的。String类中的每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改修改后的字符串内容。

    public class Tree1 {
        public static String upcase(String s) {
            return s.toUpperCase();
        }
        public static void main(String[] args) {
            String q = "how are you";
            System.out.println(q);
            String qq = upcase(q);
            System.out.println(q);
            System.out.println(qq);
        }
    }

    输出为:

    how are you
    how are you
    HOW ARE YOU

    upcase返回的是toUpperCase()方法的结果,这个方法是使String对象的字母全部大写,然后返回一个String对象。

    这里的q并没有发生变化,所以String对象是不可变的可以理解为c语言中的传值调用。

    2、重载“+”与StringBuider

      “+”字符串是用来连接String的。

    public class Tree1 {
    
        public static void main(String[] args) {
            String q = "how are you" + "233" + "what?";
            System.out.println(q);
        }
    }

    输出就是

    how are you233what?

    其实这里的 +的工作原理并不是使用的String的append方法实现的,编译器创建了一个StringBuilder,用来构造最终的String对象。。

    3、正则表达式

      一般来说,正则表达式就是以某种方式来描述字符串,因此你可以说:“如果一个字符串含有这些东西,那么它就是我正在找的东西”,例如想要找一个数字,它可能负号在最前面,那你就写一个负号加上一个问好,就像

      -?

      要描述一个整数,有一位或者多位阿拉伯数字,在正则表达式中用d表示一位数字

      Java对反斜线有和其他语言不一样的处理,比如其他语音中,\表示想要插入一个普通的反斜线,而在Java中就是想要加入一个正则表达式的反斜线,所以想要插入一个字面上的 普通的反斜线应该是\\,普通的一位数字就是\d,不过换行和制表符就只需要单反斜线:

      要表示“一个或多个之前的表达式”,应该使用+,所以,如果想要表示“可能有一个负号,后面跟着一位或者多位数字”可以这样:
      -?\d+

      

    public class Tree1 {
    
        public static void main(String[] args) {
            System.out.println("-122".matches("-?\d+"));
            System.out.println("122".matches("-?\d+"));
            System.out.println("".matches("-?\d+"));
            System.out.println("+911".matches("(-|\+)?\d+"));
        }
    }

    输出:

    true
    true
    false
    true

    前两个输出就不用说了,第三个什么都没有,所以这个+就表示 至少要有一个数字。

    第四个的  (-|\+)?\d+ 

    ?\d+ 这里的意思是至少也要一个数字,|表示或操作,-|\+表示 一个加号或者负号,(-|\+)?这个表示可能有一个加号或者负号,总的就是可能有一个加号或者负号再或者都没有的数字。

    split()方法: “将字符串从正则表达式匹配的地方切掉”

    public class Tree1 {
    
        public static void main(String[] args) {
            String s = "233-2";
            System.out.println(Arrays.toString(s.split("-\d+")));
            String t = "what are you name";
            System.out.println(Arrays.toString(t.split("\w")));
            System.out.println(Arrays.toString(t.split(" ")));
            System.out.println(Arrays.toString(t.split("a\w\w")));
        }
    }

    输出:

    [233]
    [, , , ,  , , ,  , , ,  ]
    [what, are, you, name]
    [what ,  you n]

    w表示一个单词字符

    替换:

    public class Tree1 {
    
        public static void main(String[] args) {
            String s = "233-2";
            System.out.println(s.replaceFirst("2", "q"));
            System.out.println(s.replaceAll("2", "q"));
            System.out.println(s.replaceAll("2|3", "q"));
            System.out.println(s.replaceAll("2|3|-", "q"));
            System.out.println(s.replaceAll("-\d", "q"));
            System.out.println(s.replaceAll("\d+-\d", "q"));
        }
    }

    输出:

    q33-2
    q33-q
    qqq-q
    qqqqq
    233q
    q

    replaceFirst()替换第一个,replaceAll()替换所有符合的,而且可以替换多个

    具体可以看这个 http://www.runoob.com/java/java-regular-expressions.html

  • 相关阅读:
    linux服务篇
    降智比赛题解
    CF 1437 题解
    ZR 2020普转提七连测day5
    20联赛集训day11 题解
    contest5 题解
    20联赛集训day9 题解
    20联赛集训day8 题解
    contest4 题解
    20联赛集训day7 题解
  • 原文地址:https://www.cnblogs.com/xxbbtt/p/7637840.html
Copyright © 2020-2023  润新知