导航:首页 > 编程语言 > byte截取java

byte截取java

发布时间:2022-08-05 15:23:42

java 按字节截取字符串问题

public class FormatTool {
/**
*
*
* @param
* @return String
* @param formatStr
* 被格式化字符串
* @param tag
* 不足位补充字符串
* @param len
* 字符串长度
* @param direction
* 1:左补,0:右补
* @return desc
*/
public static String format(Object formatStr, String tag, int len,
int direction) {
String str = formatStr.toString();
if (len <= str.length()) {
return str.substring(0, len);
}
StringBuilder tempStr = new StringBuilder();
for (int i = 0; i < len - str.getBytes().length; i++) {
tempStr.append(tag);
}
if (direction == 0) {
return str + tempStr;
} else {
return tempStr.append(formatStr).toString();
}
}

/**
* 字节数组拷贝
*
* @param
* @return void
* @param fromBytes
* @param toBytes
* @param from
* @param len
* desc
*/
public static void cpyBytes(byte[] fromBytes, byte[] toBytes, int from,
int len) {
for (int i = from; i < from + len; i++) {
toBytes[i - from] = fromBytes[i];
}
}

/**
* 获取字符串formatStr从from到from + len的字符串
*
* @param
* @return String
* @param formatStr
* @param from
* @param len
* @return
* desc
*/
public static String format(String formatStr, int from, int len) {
byte[] fromBytes = formatStr.getBytes();
byte[] toBytes = new byte[len];
cpyBytes(fromBytes, toBytes, from, len);
return new String(toBytes);
}
}
使用方法FormatTool.format(str,50,400);表示的意思就是截取str字符串从第50个字节开始截取,截取400个字节的字符串

㈡ java截取字符串函数

这个程序是通过先把字符串转换为byte 数组然后根据你要截取的字符串长度截取字符串的。
byte bt[] = str.getBytes(); //转化为字节数组。
if(bt[byteNum]<0)//判断截取的长度,截取的长度不能是否小于0
{
String substrx=new String(bt,0,--byteNum);
/*String(byte[] ascii, int hibyte)
已过时。 该方法无法将字节正确转换为字符。从 JDK 1.1 起,完成该转换的首选方法是通过 String 构造方法,该方法接受一个字符集名称或使用平台的默认字符集。*/

//建议: 学习的时候多看看API

㈢ JAVA的byte类型如何截断

因为java里面byte的范围是-128到127,由于byte b3 = (byte)(b1+b2)里面有强制byte转换,所以如果结果mod 256超过127的话,计算的时候按照 -128+(b1+b2)%128计算

㈣ java将byte数组中的中间一部分值取出来怎么做啊

如果以这种方式存储,那么一定是定长字符串,byte[]是以字节来存储的,你直接取规则的长度就行了啊
如下:
byte[] b = new byte[10];
b[0]='a';
b[1]='b';
b[2]='c';
b[3]='d';
String a = new String(b,0,2);
用你的例子来说:比如你的标志是5位的,编号12位,日期20位,测量值10位
那么应该是
String bz = new String(b,0,5);
String bh = new String(b,5,12);
...............
以此方式解析

㈤ java字符串字节长度截取问题

contentSummanry = contentSummanry.substring(0,100); 这就是说我要截取前面一百个字符

同学 这是最好的截取了 你试试
contentSummanry就是你要去里面截取的字符串 看看这里吧:
public class CutString {

/**
* 判断是否是一个中文汉字
*
* @param c
* 字符
* @return true表示是中文汉字,false表示是英文字母
* @throws UnsupportedEncodingException
* 使用了JAVA不支持的编码格式
*/
public static boolean isChineseChar(char c)
throws UnsupportedEncodingException {
// 如果字节数大于1,是汉字
// 以这种方式区别英文字母和中文汉字并不是十分严谨,但在这个题目中,这样判断已经足够了
return String.valueOf(c).getBytes("GBK").length > 1;
}

/**
* 按字节截取字符串
*
* @param orignal
* 原始字符串
* @param count
* 截取位数
* @return 截取后的字符串
* @throws UnsupportedEncodingException
* 使用了JAVA不支持的编码格式
*/
public static String substring(String orignal, int count)
throws UnsupportedEncodingException {
// 原始字符不为null,也不是空字符串
if (orignal != null && !"".equals(orignal)) {
// 将原始字符串转换为GBK编码格式
orignal = new String(orignal.getBytes(), "GBK");
// 要截取的字节数大于0,且小于原始字符串的字节数
if (count > 0 && count < orignal.getBytes("GBK").length) {
StringBuffer buff = new StringBuffer();
char c;
for (int i = 0; i < count; i++) {
// charAt(int index)也是按照字符来分解字符串的
c = orignal.charAt(i);
buff.append(c);
if (CutString.isChineseChar(c)) {
// 遇到中文汉字,截取字节总数减1
--count;
}
}
return buff.toString();
}
}
return orignal;
}

public static void main(String[] args) {
// 原始字符串
String s = "我ZWR爱JAVA";
System.out.println("原始字符串:" + s);
try {
System.out.println("截取前1位:" + CutString.substring(s, 1));
System.out.println("截取前2位:" + CutString.substring(s, 2));
System.out.println("截取前4位:" + CutString.substring(s, 4));
System.out.println("截取前6位:" + CutString.substring(s, 6));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}

㈥ 【急求】java 按字节截取字符串,从指定的位置开始,到指定的位置结束

用字节的话可以这样
String a = "ab我爱你cd";
byte[] bs = a.getBytes();
a = new String(bs,3,6);
这样a这个字符串就是 我爱你 的字符了

㈦ java中怎么进行byte字节长度截取

substring(int,int)

㈧ 如何截取 byte数组

例:

import java.io.UnsupportedEncodingException;

public class CustString {
public static void main(String[] args)
throws UnsupportedEncodingException {
String s =
"我ZWR爱JAVA";
// 获取GBK编码下的字节数据
byte[] data =
s.getBytes(“GBK”);
byte[] tmp = new byte[6];
// //
将data数组的前六个字节拷贝到tmp数组中
System.array(data, 0, tmp, 0, 6);
//
// 将截取到的前六个字节以字符串形式输出到控制台
s = new
String(tmp);
System.out.println(s);
}
}

结果:

��ZWR�

如果去掉GBK,则结果为:我ZWR

方法论2:

import java.io.UnsupportedEncodingException;

public class CutString {

public static boolean
isChineseChar(char c)
throws
UnsupportedEncodingException { // 如果字节数大于1,是汉字 //
//
以这种方式区别英文字母和中文汉字并不是十分严谨,但在这个题目中,这样判断已经足够了
return
String.valueOf(c).getBytes().length > 1;
}

public static String substring(String orignal, int
count)
throws UnsupportedEncodingException { //
原始字符不为null,也不是空字符串
if (orignal != null &&
!"".equals(orignal)) { // 将原始字符串转换为GBK编码格式
orignal = new
String(orignal.getBytes()); // 要截取的字节数大于0,且小于原始字符串的字节数
if
(count > 0 && count < orignal.getBytes().length)
{
StringBuffer buff = new
StringBuffer();
char
c;
for (int i = 0; i < count; i++)
{
// charAt(int
index)也是按照字符来分解字符串的
c =
orignal.charAt(i);
buff.append(c);
if
(CutString.isChineseChar(c)) { //
遇到中文汉字,截取字节总数减1
--count;
}
}
return
buff.toString();
}
}
return
orignal;
}

public static void main(String[] args) { // 原始字符串
String
s = "我ZWR爱JAVA";
System.out.println("原始字符串:" +
s);
try {
System.out.println("截取前1位:" +
CutString.substring(s, 1));
System.out.println("截取前2位:" +
CutString.substring(s, 2));
System.out.println("截取前4位:" +
CutString.substring(s, 4));
System.out.println("截取前6位:" +
CutString.substring(s, 6));
} catch
(UnsupportedEncodingException e)
{
e.printStackTrace();
}
}
}
即判断是否为汉字,再截取

㈨ java认证:如何按字节长度截取字符串

编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。public static String substring(String str, int toCount,String more){int reInt = 0;String reStr = “”;if (str == null)return “”;char[] tempChar = str.toCharArray();for (int kk = 0; (kk 《 tempChar.length && toCount 》 reInt); kk++) {String s1 = str.valueOf(tempChar[kk]);byte[] b = s1.getBytes();reInt += b.length;reStr += tempChar[kk];}if (toCount == reInt || (toCount == reInt - 1))reStr += more;return reStr;}Web应用程序在浏览器中显示字符串时,由于显示长度的限制,常常需要将字符串截取后再进行显示。但目前很多流行的语言,如C#、Java内部采用的都是 Unicode 16(UCS2)编码,在这种编码中所有的字符都是两个字符,因此,如果要截取的字符串是中、英文、数字混合的,就会产生问题,如下面的字符串:String s = “a加b等于c,如果a等1、b等于2,那么c等3”;上面的字符串既有汉字,又有英文字符和数字。要解决这个问题的方法是首先得到该字符串的UCS2编码的字节数组,如下面的代码如下:byte[] bytes = s.getBytes(”Unicode“);由于上面生成的字节数组中前两个字节是标志位,bytes[0] = -2,bytes[1] = -1,因此,要从第三个字节开始扫描,对于一个英文或数字字符,UCS2编码的第二个字节是相应的ASCII,第一个字节是0,如a的UCS2编码是0 97,而汉字两个字节都不为0,因此,可以利于UCS2编码的这个规则来计算实际的字节数,

㈩ java,要实现字符串按字节截取的方法

这个不能用char数组的,因为char的范围是-128~128,汉字一般大于127的,我提供一个方案,将string转成byte数组,可以跟编码方式,如果是gbk就是两个一组,utf-8是3个一组,遍历数组,使用逻辑与&128如果不为0表示汉字,就按编发方式三个或两个一组,如果为0就是普通的iso-8859-1,也就是一个字节一个字符,这样问题就解决了,希望对你有帮助

阅读全文

与byte截取java相关的资料

热点内容
自己建了服务器地址 浏览:696
命令按钮的属性设置 浏览:961
证券技术分析pdf 浏览:777
linux命令连接oracle 浏览:200
垫江停车收费桩怎么上App 浏览:133
好兴动app还款怎么登录不上去了 浏览:665
郑州云服务器托管 浏览:722
服务器地址跟踪 浏览:980
免费google云服务器 浏览:516
摘译和编译的英文 浏览:359
热泵压缩机选型 浏览:121
op手机微信加密如何解除 浏览:386
如何在王牌战争找到高爆率服务器 浏览:13
江浙小学语文辅导课用什么APP 浏览:99
新梦幻大陆服务器地址 浏览:241
网吧服务器怎么更换壁纸 浏览:530
linux命令方法 浏览:332
linux下载freetype 浏览:123
程序员入驻平台 浏览:327
程序员大战外挂 浏览:745