Python工程师Java之路(h)Java和Scala正则表达式和String

Java

正则表达式

完全匹配

String s = "abc123";
System.out.println(s.matches("[a-z]+[0-9]+")); // true
System.out.println(s.matches("bc12"));         // false

拆分

String s = "aa22cc.44ee";
for (String w : s.split("\\d+")) {
    System.out.println(w);
}
// aa
// cc.
// ee

替换全部

String s = "aa22cc.44ee";
System.out.println(s.replaceAll("[0-9]+", "-"));
// aa-cc.-ee

替换第一个

String s = "aa22cc.44ee";
System.out.println(s.replaceFirst("[0-9]+", "-"));
// aa-cc.44ee

String

创建

// String创建方法1
String s1 = "abc";
// String创建方法2
char[] c = {'a', 'b', 'c'};
String s2 = new String(c);
// 比较两者值
System.out.println(s1.equals(s2)); // true

空字符串

// String创建方法1
String s1 = "";
// String创建方法2
String s2 = new String();
// 比较两者值
System.out.println(s1.equals(s2)); // true
// 长度
System.out.println(s2.length()); // 0

拼接:concat

String s = "Hello" + 1 + 2;
System.out.println(s); // Hello12

包含

System.out.println("abc".contains("bc")); // true

索引查找

System.out.println("pandas".indexOf("nd")); // 2
System.out.println("pandas".lastIndexOf("as")); // 4
System.out.println("pandas".lastIndexOf("sa")); // -1

修剪首尾空白:trim

String w = "a";
String s = "\na \t";
System.out.println(w.equals(s.trim()));

字符串截取:substring

String s0 = "Python niubility";
String s1 = str.substring(7);
String s2 = str.substring(0, 6);
System.out.println(s1); // niubility
System.out.println(s2); // Python

替换:replace

String s = "111222111333";
System.out.println(s.replace("11", "00")); // 001222001333

可变字符序列

因为String对象是不可变对象,虽然可以共享常量对象,但是对于频繁字符串的修改和拼接操作,效率极低。因此,JDK又在java.lang包提供了可变字符序列:
StringBuffer:线程安全的(其方法有 synchronized修饰)
StringBuilder:线程不安全的(速度更快)

Scala

正则表达式

拆分

import scala.util.matching.Regex
val t : String = "bird+man=bird_man 01-01 12-31"
val p: Regex = new Regex("\\W")
println(p.split(t).toList)
// List(bird, man, bird_man, 01, 01, 12, 31)

查找全部

import scala.util.matching.Regex
val t : String = "bird+man=bird_man 01-01 12-31"
val p: Regex = "([0-9]+)-([0-9]+)".r
println(p.findAllIn(t).toList)
// List(01-01, 12-31)

替换全部

import scala.util.matching.Regex
val t : String = "bird+man=bird_man"
val p: Regex = "[a-z]+_[a-z]+".r
println(p.replaceAllIn(t, "***"))
// bird+man=***

完全匹配

val s: String = "aa22"
println(s.matches("[a-z]+2"))  // false
println(s.matches("[a-z]+2+")) // true

String

切片

val s1: String = "0123456789"
val s2: String = s1.slice(1, 3)
println(s2) // 12

修剪两端空白

val s1: String = "\n a \t"
val s2: String = s1.trim
println(s2.equals("a"))

HIVE

RLIKE

REGEXP
SELECT name FROM student WHERE name RLIKE '^[AC]';

MySQL

REGEXP
SELECT name FROM student WHERE name REGEXP '^[AC]';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值