而且,我想从这个字节数组里,截取任意的一段。
比如说:
String s = new String("我想从sdf这个字sdfsaf节数sdafasd组里,截取sdf任意的段");
byte [] sbyt = s.getByte();
我想取得,字符串的前20个字节!如何取得啊?
有没有好的方法呢!!!!??
急急急急!!!!!!!!!!!!
11 个解决方案
#1
判断第20个字节的码值是否大于08xb,如果是说明汉字被切分了。
#2
我想问一下,”08xb“,为什么,大于它就说明汉字被拆分了!!??
#3
在Java中永远不会出现这种情况!
Java用的是Uncode码!你用Byte[]初始化一个gb2312的字符串。
Java用的是Uncode码!你用Byte[]初始化一个gb2312的字符串。
#4
而且,我不知道“20个字节的码值”如何取得啊?
#5
你看看汉字编码吧,一般来说汉字编码是由两个字节组成的,第一个字节是从128-155的,也就是说十六进制的08;而ascII 码则为0-127;
#6
用循环去取不就ok了吗?
for (int i=0,i<sbyt.length;i++)
if (i==19) return sbyt[i];
for (int i=0,i<sbyt.length;i++)
if (i==19) return sbyt[i];
#7
能不能,举一个简单的例子呢!
#8
准确地说,大于08xb不能保证是汉字,大可以保证一定是亚洲字符,如,日文,韩文。
String str = "woshi中国人wozihao!"
至于取得方法,pnileotgx(tianlai) 的方法就可以阿
String str = "woshi中国人wozihao!"
至于取得方法,pnileotgx(tianlai) 的方法就可以阿
#9
我发现,用pnileotgx(tianlai) 的方法:
——————————————————————————————
public class bytetest
{
public static void main(String[] args)
{
String s = "离开abc";
byte [] b = s.getBytes();
for (int i=0;i<b.length;i++)
{
//if (i==2)
System.out.println("b["+i+"]="+b[i]);
}
}
结果显示:
b[0]=-64
b[1]=-21
b[2]=-65
b[3]=-86
b[4]=97
b[5]=98
b[6]=99
——————————————————————————————————
}
——————————————————————————————
public class bytetest
{
public static void main(String[] args)
{
String s = "离开abc";
byte [] b = s.getBytes();
for (int i=0;i<b.length;i++)
{
//if (i==2)
System.out.println("b["+i+"]="+b[i]);
}
}
结果显示:
b[0]=-64
b[1]=-21
b[2]=-65
b[3]=-86
b[4]=97
b[5]=98
b[6]=99
——————————————————————————————————
}
#10
为什么,汉字都为负数,英文都是正数?我还是不明白啊!到底怎么判断啊?可以根据我上面的例子写一个程序吗!?拜托了!
#11
我自己解决了!!通过汉字都为负数,英文都是正数!!
这个方法如下:
import java.io.*;
import java.util.*;
public class Test
{
String getExtension(String s){
String str = "";
for(int i = 0; i < s.length(); i++){
if(s.charAt(i)=='.'){
str=new String(s.substring(i));
}
}
return str;
}
public static void main(String[] args)
{
int m = 0;
int j = 0;
int k = 0;
String str1 =
"斯多dfgd丁gdfghssfaafdfhh法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法";
String str2 = "";
byte [] x = str1.getBytes();
for(int i = 0; i < 140; i++){
if(x[i] < 0){
m++;
}
if(x[i] > 0){
j++;
}
}
if(m % 2 == 0){
str2 = new String(x,0,140);
}
if(m % 2 != 0){
str2 = new String(x,0,139);
}
System.out.println(x.length+" "+str2);
}
}
这个方法如下:
import java.io.*;
import java.util.*;
public class Test
{
String getExtension(String s){
String str = "";
for(int i = 0; i < s.length(); i++){
if(s.charAt(i)=='.'){
str=new String(s.substring(i));
}
}
return str;
}
public static void main(String[] args)
{
int m = 0;
int j = 0;
int k = 0;
String str1 =
"斯多dfgd丁gdfghssfaafdfhh法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法";
String str2 = "";
byte [] x = str1.getBytes();
for(int i = 0; i < 140; i++){
if(x[i] < 0){
m++;
}
if(x[i] > 0){
j++;
}
}
if(m % 2 == 0){
str2 = new String(x,0,140);
}
if(m % 2 != 0){
str2 = new String(x,0,139);
}
System.out.println(x.length+" "+str2);
}
}
#1
判断第20个字节的码值是否大于08xb,如果是说明汉字被切分了。
#2
我想问一下,”08xb“,为什么,大于它就说明汉字被拆分了!!??
#3
在Java中永远不会出现这种情况!
Java用的是Uncode码!你用Byte[]初始化一个gb2312的字符串。
Java用的是Uncode码!你用Byte[]初始化一个gb2312的字符串。
#4
而且,我不知道“20个字节的码值”如何取得啊?
#5
你看看汉字编码吧,一般来说汉字编码是由两个字节组成的,第一个字节是从128-155的,也就是说十六进制的08;而ascII 码则为0-127;
#6
用循环去取不就ok了吗?
for (int i=0,i<sbyt.length;i++)
if (i==19) return sbyt[i];
for (int i=0,i<sbyt.length;i++)
if (i==19) return sbyt[i];
#7
能不能,举一个简单的例子呢!
#8
准确地说,大于08xb不能保证是汉字,大可以保证一定是亚洲字符,如,日文,韩文。
String str = "woshi中国人wozihao!"
至于取得方法,pnileotgx(tianlai) 的方法就可以阿
String str = "woshi中国人wozihao!"
至于取得方法,pnileotgx(tianlai) 的方法就可以阿
#9
我发现,用pnileotgx(tianlai) 的方法:
——————————————————————————————
public class bytetest
{
public static void main(String[] args)
{
String s = "离开abc";
byte [] b = s.getBytes();
for (int i=0;i<b.length;i++)
{
//if (i==2)
System.out.println("b["+i+"]="+b[i]);
}
}
结果显示:
b[0]=-64
b[1]=-21
b[2]=-65
b[3]=-86
b[4]=97
b[5]=98
b[6]=99
——————————————————————————————————
}
——————————————————————————————
public class bytetest
{
public static void main(String[] args)
{
String s = "离开abc";
byte [] b = s.getBytes();
for (int i=0;i<b.length;i++)
{
//if (i==2)
System.out.println("b["+i+"]="+b[i]);
}
}
结果显示:
b[0]=-64
b[1]=-21
b[2]=-65
b[3]=-86
b[4]=97
b[5]=98
b[6]=99
——————————————————————————————————
}
#10
为什么,汉字都为负数,英文都是正数?我还是不明白啊!到底怎么判断啊?可以根据我上面的例子写一个程序吗!?拜托了!
#11
我自己解决了!!通过汉字都为负数,英文都是正数!!
这个方法如下:
import java.io.*;
import java.util.*;
public class Test
{
String getExtension(String s){
String str = "";
for(int i = 0; i < s.length(); i++){
if(s.charAt(i)=='.'){
str=new String(s.substring(i));
}
}
return str;
}
public static void main(String[] args)
{
int m = 0;
int j = 0;
int k = 0;
String str1 =
"斯多dfgd丁gdfghssfaafdfhh法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法";
String str2 = "";
byte [] x = str1.getBytes();
for(int i = 0; i < 140; i++){
if(x[i] < 0){
m++;
}
if(x[i] > 0){
j++;
}
}
if(m % 2 == 0){
str2 = new String(x,0,140);
}
if(m % 2 != 0){
str2 = new String(x,0,139);
}
System.out.println(x.length+" "+str2);
}
}
这个方法如下:
import java.io.*;
import java.util.*;
public class Test
{
String getExtension(String s){
String str = "";
for(int i = 0; i < s.length(); i++){
if(s.charAt(i)=='.'){
str=new String(s.substring(i));
}
}
return str;
}
public static void main(String[] args)
{
int m = 0;
int j = 0;
int k = 0;
String str1 =
"斯多dfgd丁gdfghssfaafdfhh法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法斯多夫缩j的发撒非都撒d度发大幅度泗sfaafdf司法";
String str2 = "";
byte [] x = str1.getBytes();
for(int i = 0; i < 140; i++){
if(x[i] < 0){
m++;
}
if(x[i] > 0){
j++;
}
}
if(m % 2 == 0){
str2 = new String(x,0,140);
}
if(m % 2 != 0){
str2 = new String(x,0,139);
}
System.out.println(x.length+" "+str2);
}
}