String
2018-12-02 本文已影响6人
panzhangbao
String s = "hello,my wife";
System.out.println("我每天花 " + 3 + " 个小时时间读书");
// 获取字符串长度
int length = s.length();
// 字符串查找
int firstIndex = s.indexOf("l"); // 查找字符串 "l"首次出现的下标位置,如查找不到 返回 -1
int lastIndex = s.lastIndexOf("l"); // 获取最后一个 l 的位置
char index = s.charAt(4); // 获取 第 5 个位置的字符
// 字符串操作
s.substring(1); // 从下标为 1 的位置开始获取子字符
s.substring(1, 3); // 从下标 1 到下标 3
s.trim(); // 去掉前后空格
s.replace("hello", "love"); // 将 hello 替换成 love
s.startsWith("hello"); // 判断 prefix
s.endsWith("word"); // 判断 suffix
s.equals("hello"); // 判断字符串是否相等
s.equalsIgnoreCase("Hello"); // 忽略大小写比较
/**
* 按字典顺序比较 2 个字符串,比较的是各个字符的 Unicode 值
* 返回值说明:正整数 >
* 负整数 <
* 0 =
*/
int result = s.compareTo("Hello.");
result = s.compareToIgnoreCase("HeLLL");
// 大小写转换
s.toLowerCase();
s.toUpperCase();
// 分割字符串
s.split(",|.|="); // 串被 , . = 分割
s.split(",", 5); // 串被 , 分割,限制次数为 5 次
// 格式化字符串
String s2 = s.format("我是中国人,我有%d个家,%f元", 1, 55.5);
System.out.println(s2);
// 5.日期和时间串格式化
/**
* 常用的日期格式化转换符
* %te 一个月中的某一天 2
* %tb 指定语言环境的月份名称 Feb、二月
* %tB 指定语言环境的月份全程 February、二月
* %ta 指定语言环境的星期几 Mon、星期一
* %tA
* %tc 包括全部日期和时间信息 星期日 一月 15 23:59:56 CST 2017
* %ty 2 位年份 17
* %tY 4 位年份 2017
* %tj 一年中的第几天(001~366) 088
* %tm 月份 01
* %td 一月中的第几天(01~310 16
*/
Date date = new Date();
String year = String.format("%tY", date);
String month = String.format("%tm",date);
String day = String.format("%td", date);
String weak = String.format("%ta", date);
System.out.println("今天是 " + year + "年" + month + "月" + day + "日" + weak);
/** 时间格式化转换符
* %tH 2 位数字的 24 时制的小时(00 - 23)
* %tk 2 位数字的 24 时制的小时(0 - 23)
* %tI 2 位数字的 12 时制的小时(01 - 12)
* %tl 2 位数字的 12 时制的小时(1 - 12)
*
* %tm 分钟(00 - 59)
* %ts 秒数(00 - 60)
* %tL 好秒数(000 - 999)
* %tN 微妙数(000000000 - 999999999)
*
* %tp 指定语言环境下上午或下午标记 如:下午、pm
* %tz 相对于GMT RFC 82 格式的数字时区偏移量 如:+0800
* %tZ 时区缩写形式的字符串 如:CST
*
* %ts 1970-01-01 00:00:00 至今经过的秒数 如:1206426646
* %tQ 1970-01-01 00:00:00 至今经过的毫秒数 如:1206426646737453
*/
/** 常见的日期和时间组合
* %tF 年-月-日(4 位年份) 如:2017-03-31
* %tD 月/日/年(2 位年份0 如:17/31/03
* %tc 全部日期和时间 如:星期二 三月 25 15:20:00 CST 2008
* %tr 时:分:秒 PM(AM) 如:03:22:04 下午
* %tT 时:分:秒 如:15:22:33
* %tR 时:分 如:15:24
*/
String ymd = String.format("%tF", date);
String hms = String.format("%tT", date);
String weak2 = String.format("%ta", date);
System.out.println(ymd + " " + hms + " " + weak);
/** 正则表达式中的写法
*
* . 代表任意一个字符
* \\d 代表 0 - 9 的任何一个数字
* \\D 代表任何一个非数字字符
* \\s 空白字符
* \\S 非空白字符
* \\w 可用作标识符的字符,但不包括$
* \\W 不可用于标识符的字符
*
* \\p{Lower} 小写字母 a - z
* \\p{Upper} 大写字母 A - Z
* \\p{ASCII} ASCII 字符
* \\p{Alpha} 字母字符
* \\p{Digit} 十进制数字,即 0 - 9
* \\p{Alnmu} 数字或字母字符
* \\[{Punct} 标点符号
* \\p{Print} 可打印字符:[\p{Graph}\x20]
* \\p{Blank} 空格或制表符:[\t]
* \\p{Cntrl} 控制字符:[\x00-\x1F\x7F]
*/
/** 方括号 [] 含义
* [abc] abc任意一个字符
* [^456] 456 之外的任何字符
* [a-r] a-r中的任何一个字母
* [a-zA-Z] 任意一个英文字母
* [a-e][g-z]] a-e 或 g-z 中的任何一个字母(并运算)
* [a-o&&[def]] 字母d、e、f(交运算)
* [a-e&&[^bc]] a、d、e(差运算)
*/
/** 限定修饰符
* ? 0次或1次 A?
* * 0次或多次 A*
* + 一次或多次 A+
* {n} 正好出现n次 A{2}
* {n,} 至少出现n次 A{3,}
* {n,m} 出现n-m次 A{2,5}
*/
// EMail格式:x@x.X
// 定义要匹配 E-mail地址的正则表达式
String regex = "\\w+@\\w+(\\.\\w{2,3})+";
String re1 = "aaa";
String re2 = "aaaa@";
String re3 = "a@12";
String re4 = "a@126.com";
String re5 = "a@126.com.cn";
String re6 = "1@a.com.cn.com.cn";
if (re6.matches(regex)){
System.out.println("E-mail格式正确");
}else {
System.out.println("E-mail格式不正确");
}
/** 字符串生成器
*
* append()
* insert(int offset, arg)
* delete(int start, int end)
*/
long startTime = System.currentTimeMillis();
StringBuilder stringBuilder = new StringBuilder("begin");
for (int i = 0; i < 10000; i++) {
stringBuilder.append(i);
}
long endTime = System.currentTimeMillis();
long time = endTime - startTime;
System.out.println("StringBuilder用时:" + time + "毫秒");
```