文章目录
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]';