java实现php substr函数(截取字节)

场景

  1. php项目转java,php使用的是substr方法,java使用String.substring替换,发现截取的结果是不同的。那么java应该怎么实现呢?

分析和解决

  1. substr函数截取的是什么? php官方文档中没有说明,但实际上截取的是字节
    1.1 如果字符串编码是utf8 那么中文占3个字节, 比如:
$sourceStr = "学会感恩HelloWorld";
echo "原串:" . $sourceStr . PHP_EOL;
echo "2字节 :" . substr($sourceStr, 0,2) . PHP_EOL;
echo "3字节 :" . substr($sourceStr, 0,3) . PHP_EOL;
echo "6字节 :" . substr($sourceStr, 0,6) . PHP_EOL;

在这里插入图片描述
1.2 如果字符串编码是gbk 那么中文占2个字节
2. java substring截取的是字符, 那么java怎么才能实现subStr呢?
2.1 思路: 字符串转成byte数组,从byte数组中截取需要的部分, 然后再转回字符串

    private String substr(String sourceStr, int from, int to){
       return new String(Arrays.copyOfRange(sourceStr.getBytes(StandardCharsets.UTF_8), from, to), StandardCharsets.UTF_8);
   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值