c++ to_string 指定字符位数_Java 字符串拼接,去首尾, 判空, 类型转换
去掉首尾空白字符
使用trim()
方法可以移除字符串首尾空白字符。
空白字符包括空格,t
,r
,n
:
String s = "t u3000 hello t n r";
System.out.println(s.trim());
return " hello"
注意:trim()
并没有改变字符串的内容,而是返回了一个新字符串。而且trim 不会删除中文字符的空格。要想删掉中文的空格,需要使用strip()
String s = "t u3000 hello t n r";
System.out.println(s.strip());
return "hello"
判空
String
还提供了isEmpty()
和isBlank()
来判断字符串是否为空和空白字符串:
isEmpty
根据字符串是否为空
isBlank
根据字符串是否为空白字符串 包括 n t r
类型转换
任意类型转换为字符串:
要把任意基本类型或引用类型转换为字符串,可以使用静态方法valueOf()
。这是一个重载方法,编译器会根据参数自动选择合适的方法.
String.valueOf(123); // "123"
String.valueOf(45.67); // "45.67"
String.valueOf(true); // "true"
String.valueOf(new Object()); // 类似java.lang.Object@636be97c
字符串转换其他类型:
视情况而论
int n1 = Integer.parseInt("123"); // 123
int n2 = Integer.parseInt("ff", 16); // 按十六进制转换,255boolean b1 = Boolean.parseBoolean("true"); // true
boolean b2 = Boolean.parseBoolean("FALSE"); // false//String和char[]类型可以互相转换
char[] cs = "Hello".toCharArray(); // String -> char[]
String s = new String(cs); // char[] -> String
从
String
的不变性设计可以看出,如果传入的对象有可能改变,我们需要复制而不是直接引用
- Java字符串
String
是不可变对象; - 字符串操作不改变原字符串内容,而是返回新字符串;
- 常用的字符串操作:提取子串、查找、替换、大小写转换等;
- Java使用Unicode编码表示
String
和char
; - 转换编码就是将
String
和byte[]
转换,需要指定编码; - 转换为
byte[]
时,始终优先考虑UTF-8
编码。
缓冲字符串StringBuilder:
如果直接拼接字符串,是可以的,但是,在循环中,每次循环都会创建新的字符串对象,然后扔掉旧的字符串。这样,绝大部分字符串都是临时对象,不但浪费内存,还会影响GC效率。
为了能高效拼接字符串,Java标准库提供了StringBuilder
,它是一个可变对象,可以预分配缓冲区,这样,往StringBuilder
中新增字符时,不会创建新的临时对象:
使用 stringBuilder
在拼接字符串的同时可以减少内存的占用
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) {sb.append(i);sb.append("- ");if ( i % 10 ==0){sb.append("n");}}
System.out.println(sb.toString());
总结字符串拼接的三种方式:
- 使用 内部方法 StringBuilder 预分配缓冲区, 进行字符拼接, 操作对象:需要不断变化的字符串, 减少内存的使用, 也是使用最频繁的一种方式。
// 拼接字符串System.out.println("-------------------------------");String[] names = {"Bob", "Alice", "Kim"};StringBuilder stringName = new StringBuilder();stringName.insert(0, "Hello ");for (String s: names){stringName.append(s).append(", ");}stringName.delete(stringName.length() - 2, stringName.length());stringName.insert(stringName.length(), "!");System.out.println(stringName.toString());System.out.println("-------------------------------");return --> Hello Bob, Alice, Kim!
使用这种方式,就不能对操作限制符了, 但其他操作还是很友好的。
- 使用静态方法join(), 实际这个方法内部还是使用了
StringJoiner
来拼接字符串,在不需要指定“开头”和“结尾”的时候,用String.join()
更方便, 对于数组来说, 使用 join() 方式真的就是方便太多了。// 使用 join() 静态方法 还是之前的例子 System.out.println("-------------------------"); String[] names = {"Bob", "Alice", "Kim"}; String s = String.join(", ", names); System.out.println("Hello " + s + "!"); - 使用 内部方法 StringJoiner , 一般不怎么用这个方法, 反正都是写在了join() 内部, 我们可以查看join的内部函数:
public static String join(CharSequence delimiter, CharSequence... elements) { Objects.requireNonNull(delimiter); Objects.requireNonNull(elements); // Number of elements not likely worth Arrays.stream overhead. StringJoiner joiner = new StringJoiner(delimiter); for (CharSequence cs: elements) { joiner.add(cs); } return joiner.toString(); }
如果我们还是按照之前的例子, 重新写一个 StringJoiner
// 使用StringJoinerString[] names = {"Bob", "Alice", "Kim"};StringJoiner sb = new StringJoiner(", ", "Hello ", "!");for (String s: names){sb.add(s);}System.out.println(sb.toString());
注意一点, StringJoiner() 可以加分隔符, 开头字符串, 和尾部字符串.
以上就是本文的所讲内容了,初次发文,大家喜欢的话可以关注支持一下哈!
c++ to_string 指定字符位数_Java 字符串拼接,去首尾, 判空, 类型转换相关推荐
- c++ to_string 指定字符位数_你不知道的ES6字符串的扩展
茫茫人海中与你相遇 相信未来的你不会很差 作者:知否 来源:https://segmentfault.com/a/1190000038557524 我们来学习 ES6中字符串类型的扩展,包括一些字符串 ...
- java 去掉分隔符_Java字符串拼接去掉首尾中间用分隔符分割
可能一般我们需要将数组里的元素转为字符串或者将某个集合里的元素提取出来或者转换需要用到这种拼接,在循环遍历中每个元素的时候在末尾加入特定的分隔符, 这里我们举例这个集合为自己创建的数组. 之前我们可能 ...
- 银行卡号,指定字符长度分割字符串
2019独角兽企业重金招聘Python工程师标准>>> 每隔指定字符长度分割字符串,可以制作银行卡号格式化提示功能.利用正则替换实现.js代码如下; <script type= ...
- mysql截取前几个字符串_mysql中截取指定字符前后的字符串
使用SUBSTRING_INDEX()函数 substring_index(str,delim,count) str:要处理的字符串 delim:分隔符 count:分隔符计数 例子 取出上述表中数组 ...
- 正则表达式匹配从指定字符开始到指定字符结束的字符串
a.*?b就是a开始b结束的匹配 如果要限制是一行的开头和末尾的话,就是^a.*?b$ 转自:正则表达式匹配从指定字符开始到指定字符结束的字符串
- java的字符定义_Java字符串定义及常用方法
String.StringBuffer和StringBuilder String修饰的是不可变的字符串,而StringBuffer和StringBuilder类的对象是可以被修改的. StringBu ...
- java拼接字符串的_Java字符串拼接(连接)
对于已经定义的字符串,可以对其进行各种操作.连接多个字符串是字符串操作中最简单的一种.通过字符串连接,可以将两个或多个字符串.字符.整数和浮点数等类型的数据连成一个更大的字符串. String 字符串 ...
- html从指定字符开始截取字符串,字符串截取指定位置前后字符串
http://www.cnblogs.com/csj007523/archive/2012/07/15/2592188.html 1)rangeOfString:截取指定字符串的长度: 2) subs ...
- java拼接字符串_Java字符串拼接
字符串拼接 String 在Java中,String是一个不可变类,所以String对象一旦在堆中被创建出来就不能修改. package java.lang; //import ... public ...
最新文章
- 青少年python编程课_青少年之Python编程课程安排第一季
- python打包_cx_freeze
- RabbitMQ之交换机的四种类型和属性
- 浙大提出会打德扑的「自我博弈」AI,还会玩射击游戏
- go 随机数是重复的
- 【javascript】js处理字符串
- mysql+after+commit_Spring事务aftercommit原理及实践
- 如何使用 Convert.exe 将分区转换为 NTFS 文件系统
- Golang之不可重入函数实现
- 你需要知道的基础算法知识——STL和基础数据结构(五)
- linux系统分类;linux find命令
- Web前端页面劫持和反劫持
- C++使用librdkafka创建消费者和生产者
- 企业转型遇到这些难题,就可以考虑一款APS生产计划排产软件了
- html版电子表,秒表,倒计时
- SpringBoot整合阿里云视频点播
- 如何将RTOS系统启动时间做到“毫秒级”?AliOS Things是这样做的
- 通过NFS服务器将设备目录挂载到Windows目录
- 如何设置网件gs108e_【美国网件 GS108E 交换机开箱总结】插头|接口|散热孔|指示灯_摘要频道_什么值得买...
- 论文笔记-DeepLung: Deep 3D Dual Path Nets for Automated Pulmonary Nodule Detection and Classification