本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。
一、创建字符串
public static void main(String[] args) {
String s1 = "abc";
String s2 = new String("abc");
System.out.println(s1);
System.out.println(s2);
//根据字符数组创建
char[] arr = {'a', 'b', 'c'};
String s3 = new String(arr);
System.out.println(s3);
}
二、字符串拼接
开发中应该经常使用字符串拼接,针对两个字符串拼接很简单,使用+号拼接sorry easy。 但是如果其中一个可能为空,为空不拼接怎么处理呢?简单,if else判断下。如果是3个字符串,4个,。。。
这个时候怎么处理呢? 先把要拼接的字符串放进一个数组或者集合里面,循环拼接,最后去除间隔符号。
public static void main(String[] args) {
//两个字符串拼接
String a = "a";
String b = "b";
System.out.println(a + b);
//两个字符串拼接 中间用-隔开
System.out.println(a + "-" + b);
//三个字符拼接 省 市 县/区 中间用-隔开
String province = "四川省";
String city = "成都市";
String county = "金堂县";
System.out.println(province + "-" + city + "-" + county);
//假设city为空(只是知道city可能为空)
city = null;
String result = province + "-";
if (StringUtils.isNotBlank(city)) {
result += city + "-";
}
result += county;
System.out.println(result);
//如果province,city,county都可能为空 怎么处理呢
List<String> arr = new ArrayList<>();
arr.add(province);
arr.add(city);
arr.add(county);
StringBuffer buffer = new StringBuffer();
for (String s : arr) {
if (StringUtils.isNotBlank(s)) {
buffer.append(s).append("-");
}
}
buffer.delete(buffer.length() - 1, buffer.length());
System.out.println(buffer);
//写了挺多的 直接用apache的common工具
String join = StringUtils.join(arr.stream().filter(StringUtils::isNotBlank).collect(Collectors.toList()), "-");
System.out.println(join);
}
//综上所诉 直接工具类就完事了 直接引入org.apache.commons.lang3
三、字符串转与数字的转换
public static void main(String[] args) {
//字符串转数字
String s = "123";
System.out.println(Integer.parseInt(s));
System.out.println(Long.parseLong(s));
//数字转字符串
Integer a = 123;
String b = String.valueOf(a);
System.out.println(b);
}
四、String是否为空字符的判断
public static void main(String[] args) {
String s = "";
System.out.println(s==null);
//判断空串
System.out.println(Objects.nonNull(s));
System.out.println(StringUtils.isNotBlank(s));
System.out.println(StringUtils.isBlank(s));
}
五、String替换
public static void main(String[] args) {
String s1 = "世界真的美好abc";
//去除abc
System.out.println(s1.replace("abc", ""));
String s2 = "abc世界真的美好abc";
System.out.println(s2.replace("abc", ""));
String s = "2021-02-01哈哈哈2020-01-02";
//正则替换 $0表示正则匹配到的自身 $1即第一个组
//( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 ( 和 )。
System.out.println(s.replaceAll("(\d{4})-(\d{2})-(\d{2})","$1"));
}
六、使用正则校验String格式
public static void main(String[] args) {
String s = "2020-10-11 12:00:00";
Pattern pattern = Pattern.compile("\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}");
Matcher matcher = pattern.matcher(s);
//true
System.out.println(matcher.matches());
}
七、截取字符串
public static void main(String[] args) {
String s = "abc你快乐吗a";
//截取时包含开始位置,不包含结束位置。无结束位置时截取开始到剩余的全部
System.out.println(s.substring(3, s.length() - 1));
}
八、字符串分割
public static void main(String[] args) {
String s = "四川省-成都市-金牛区";
String[] split = s.split("-");
System.out.println(Arrays.toString(split));
}
字符串是否包含某个字符的判断
public static void main(String[] args) {
String s = "快乐吗acd";
System.out.println(s.contains("acd"));
}