JAVA按字节截取字符串

public class SubStringTest {

    @Test
    public void test() {

        String s = "北京市丰台区东铁营街道政馨园社区1区1号楼1层";
        System.out.println(subString(s, 58));
    }

    public static String subString(String source, int length) {

        StringBuffer buffer = new StringBuffer();
        char[] chars = source.toCharArray();
        char c;
        for (int i = 0;; i++) {
            if (length <= 0) {
                break;
            }
            c = source.charAt(i);
            buffer.append(c);
            length -= String.valueOf(c).getBytes().length;
            if (i + 1 < chars.length) {
                if (String.valueOf(chars[i + 1]).getBytes().length > length) {
                    break;
                };
            }
        }
        return buffer.toString();
    }
}

原文地址:https://www.cnblogs.com/zhengbing/p/12174121.html

时间: 2024-08-13 23:47:05

JAVA按字节截取字符串的相关文章

java基础知识回顾之---java String final类普通方法的应用之“按照字节截取字符串”

/*需求:在java中,字符串“abcd”与字符串“ab你好”的长度是一样,都是四个字符.但对应的字节数不同,一个汉字占两个字节.定义一个方法,按照最大的字节数来取子串.如:对于“ab你好”,如果取三个字节,那么子串就是ab与“你”字的半个,那么半个就要舍弃.如果去四个字节就是“ab你”,取五个字节还是“ab你”.*/ 代码:其实是一个解码和编码的问题,要明白UTF-8码表和GBK码表的区别,UTF-8中用三个字节代表一个汉字,GBK使用2个字节代表一个汉字. 且在码表中都是用数字存放这些汉字.

Java中根据字节截取字符串

一.简介 为了统一世界各国的字符集,流行开了Unicode字符集,java也支持Unicode编码,即java中char存的是代码点值,即无论是'A'还是'中'都占两个字节. 代码点值:与Unicode编码表中字符相对应的代码值: 代码单元:就是java中的一个char,可一个以认为是字符编码的基本单元 二.根据字节截取字符串的代码实现 public String getSubString(String str, int length) throws Exception { int i; int

按字节截取字符串

按字节截取字符串,参数:字符串,截取的字符          function getStr(str, n) {                 if (lenFor(str) <= n) {                     return str;                 }                 var tmpStr = str.substr(0, n);                 var tmpCode = tmpStr.replace(/[^\x00-\xf

面试题之java 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 要求不能出现截半的情况

题目:10. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串. 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”. 一.需要分析 1.输入为一个字符串和字节数,输出为按字节截取的字符串-------------->按照字节[byte]截取操作字符串,先将String转换成byte类型 .2.汉字不可以截半----------------------------------

java按照字节切割字符串,解决汉字的问题

编写一个截取字符串的函数,输入为一个字符串,截取开始地址,截取字节数,输出为按字节截取的字符串. 但是要保证汉字不被截半个, 如"我ABC",0,4,应该截为"我AB",输入"我ABC汉DEF",1,4,应该输出为"ABC"而不是"ABC+汉的半个". import java.io.UnsupportedEncodingException; public class SubStr { public stat

Java 按字节计算字符串的长度

在<从后向前截取指定长度的字符串>中介绍了如何截取字符串,本文介绍如何统计字符串的字节长度. import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.UnsupportedEncodingException; public class GetLength { private static final Logger logger = LoggerFactory.getLogger(GetLength.clas

Java 用正则表达式 截取字符串中的数字

package com.benywave; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args) { String str = "急救电话 112"; Pattern pattern = Pattern.compile("[0-9]{1,}"); Matcher matcher

Java 按字节获得字符串(中文)长度

引自:http://songjianyong.iteye.com/blog/1552973 package cn.com.songjy.test; import java.io.UnsupportedEncodingException; /** * 在Java中按字节获得字符串长度的两种方法 * */ public class App { public static void main( String[] args ) throws UnsupportedEncodingException {

按照字节截取字符串

public class Test01 { public static void main(String[] args) { System.out.println(subByByte("sss计算机", 6)); } /** * * @param str * @param len 截取的字节长度 * @return String */ public static String subByByte(String str,int len){ if(str.length()*2<len