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,不过换行和制表符就只需要单反斜线:\n\t

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

转载于:https://www.cnblogs.com/xxbbtt/p/7637840.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值