在码代码时经常会遇到截取字符串的问题,有时候字符串会包含中文、Emoji表情、以及一些特殊符号,这时使用String的substring()进行截取操作,结果就有可能是乱码或者不符合要求。这是因为JVM运行时使用UTF-16编码,对于普通的字符都是使用char类型存储(2个字节),而对于中文、emoji表情是用两个char存储(4个字节),substring是按照char截取的,就有可能只截取了半个中文字符。这时我们要是用String提供的另一个方法offsetByCodePoints(int index,int codePointOffset)

(该方法返回此String 中从给定的 index 处偏移 codePointOffset 个Unicode代码点的索引),来辅助实现substring方法。

public static String substring(String source, int start, int end) {String result;try {result = source.substring(source.offsetByCodePoints(0, start),source.offsetByCodePoints(0, end));} catch (Exception e) {result = "";}return result;}

截取含有中文、Emoji表情、特殊符号的字符串相关推荐

  1. C++ 区分中文,非中文,截取含有中文的string字符串的两种方法

    C++ 区分中文,非中文,截取含有中文的string字符串的两种方法 方法一 根据中文在ASCII中的范围判断 方法二 把string转成wstring 转自: http://blog.51cto.c ...

  2. 截取含有中文的字符段

    题目要求: 输入里面既含有中文又含义英文,按照我们平时读的习惯,截取任意长度的字符串n(n<=总长度) 例:china中国verygood天朝nice fn(5) = china fn(6) = ...

  3. 日常小结:emoji表情转换utf-8编码字符串(存入数据库)/还原表情字符(页面展示)

    直接贴上工具类 package com.epean.trade.framework.util;import java.net.URLDecoder; import java.net.URLEncode ...

  4. golang 如何翻转含有中文 数字 英文字母等任意字符串

    问题描述 翻转含有 中文.数字.英文字母 等任意字符串 示例 输入:"he師l發lo,世.+-*界,6" 输出:"6,界*-+.世,ol發l師eh" Golan ...

  5. mysql 中文截取_中文字符串截取

    java多字节字符串按字节截取 算法思路 1.先按照实际要截取的字节长度,复制一份字节数组 2.转换回字符串,计算字符长度resLen,并按这个长度截取原字符串 3.计算截取的字符串的字节数是否等于需 ...

  6. MySQL 字符串删除表情符_字符串中Emoji表情处理

    吃了经验的亏,因为Emoji表情引起的项目bug被撸主遇到两次了,总有一些调皮的小朋友爱用表情来搞点事.第一次把当时那个表改为utf8mb4解决了,第二次说啥都不好使.网上找了半天,发现好多人不去实验 ...

  7. java处理Emoji表情

    java储存数据时遇到内容中有Emoji表情,存入数据库报错! 处理方法主要有两个:  一.修改数据库字符集:  这种方法需要的硬性要求就是你的mysql数据库版本5.5以后的.把数据表编码方式改为u ...

  8. 字符串中Emoji表情处理

    吃了经验的亏,因为Emoji表情引起的项目bug被撸主遇到两次了,总有一些调皮的小朋友爱用表情来搞点事.第一次把当时那个表改为utf8mb4解决了,第二次说啥都不好使.网上找了半天,发现好多人不去实验 ...

  9. java字符串Emoji表情的处理

    在做全局搜索时,遇到内容中有手机表情,存入数据库是报错!网上找了半天,发现好多人不去实验一下就复制别人的代码网上发,然后导致我拿来用直接不行.最终找到一个可以行办法,在此总结一下: 方法主要有两个: ...

最新文章

  1. 数据库索引为什么使用B+树?
  2. kafka集群原理介绍
  3. [Java网络编程基础]UDP发送和接收数据
  4. android中setText不能传int值
  5. Socket编程Http下载的简单实现
  6. 掌握了AI这些点,面试官的天选之子就是你
  7. python切片为列表增加元素_python – 使用切片语法来加入列表的一部分列表元素...
  8. Android 屏幕画笔实现
  9. Excel双样本T检验之异方差检验
  10. 计算机办公模式是什么,华为Mate 10“电脑模式”告诉你什么是真正的“移动办公”...
  11. Assignment中脚注和尾注的正确打开方式
  12. 区块链代采供应链金融平台方案设计手稿
  13. mino文件服务器,mimo技术有什么用_mino技术原理解析
  14. 2018中南大学 计算机考研分数,2018年中南大学考研复试分数线已公布
  15. PC端工具 WP7 PC端截图工具WP7 Screen recorder 发布 附使用教程
  16. 【知识图谱】语义网络,语义网,链接数据和知识图谱
  17. 【Java】Java基础
  18. PureMVC(AS3)剖析:实例
  19. cfg格式文件在服务器哪里,cfg文件,小编教你怎么打开cfg文件
  20. Ubuntu中使用vi编辑时方向键乱码或退格键不能使用解决方法

热门文章

  1. 28、Qt 之图形(渐变填充)
  2. cds云服务器_云探CDS拨测服务全面上线
  3. 信奥学习规划 信息学竞赛之路(2022.07.31)
  4. Discovery studio使用之DNA建模
  5. 5G 中的SDN/NFV 和云计算
  6. 基于Echarts+HTML5可视化数据大屏展示—大数据统计展示大屏
  7. 比尔盖兹退休告别演说:下个数位十年
  8. 三款视频下载工具,让你不花钱也有vip的下载速度!
  9. 3975: 人工智能(障)?
  10. lamp mysql开机自启_CentOS 程序开机自启动方法总结