给定一个字符串如“我要ABC”,怎么截取给定字节数的字符串 ,如 “我ABC”4  , 输出 “我AB”。“我AB要”5  输出“我AB” (注意汉字截取一半是 舍去)。

解决方案 »

  1.   

    自己google一下吧。十多年前就已经考烂了的题目。
      

  2.   

    查看一下Java API中关于String操作的。
      

  3.   

    public class NiuTest
    {
    public static String changeStr(String str0,int )
    {
    char str[]=str0.toCharArray();//转化成字符数组
    if(<0)
    {
    return str0;
    }
    else
    {
    for(int i=;i<str.length;i++)
    {
    str[i-1]=str[i];
    }
    str[str.length-1]='\0';
    str0=new String(str);
    return str0;
    }
    }
    public static void main(String[] args)
    {
    String strSource="我ABC";
    System.out.println(changeStr(strSource,4));
    }
    }
      

  4.   


    package com.js_java.test12;import java.util.Scanner;public class StringEx_1 {
    /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
                    System.out.println("请输入需要截取字符串");
    Scanner scanner = new Scanner(System.in);
    String string = scanner.next();
    char c[] =string.toCharArray();//new char[string.length()];
    System.out.println("要截取第几个字符");
                    int num = scanner.nextInt();
    //int x = num;
    for(int i =0;i<num;i++)
    {
    //c[i]=string.charAt(i);
        if(c[i]>=256)
    {
    num--;
    }
    }
    System.out.println(string.substring(0, num));
    }
    }
      

  5.   

    请问c[i]>=256这个判断里的256是依据什么啊?
      

  6.   

    这里的256是2的8次方,中文是双字节的所以转换成char的时候它的值大于等于256。
      

  7.   

    是C的题目吧,java用的是uncode码,汉字是一个字符的
      

  8.   

            String s="Aa土土"; //给定的原字符串,自己设置
    int n=5; //给定的字节长度
    byte[] b=s.getBytes(); //转换成字节数组
    s=new String(b,0,n); //以要求的字节数构建新字符串
    if (s.charAt(s.length()-1)>127){//判断最后一个字符是否为中文的半个字符,是的情况下不输出.
    System.out.println(s.substring(0, s.length()-1));
    }
    else System.out.println(s);我这个直接的字节长度,应该比对字符数组进行判断后重组好些
      

  9.   

    其实不用定义数组记得C#中有个截取和替换字符的方法(好像是热rexc记不清了你查下吧,然后replace一下),我想java中同样有此方法吧。你试一下
      

  10.   

    public class StringSplitTest { /**
      * @author java-demon 
      * @param args
      */
     
     public static void main(String args[]){
      String s = "ABC汉DEF";
      int len = 3;
      SplitStr(s,len);
     }
     
     public static void SplitStr(String str,int len){
      
      String result = "";
      char temp;
      //取得的字节数
      int counter=0;
      int i=0;
      //汉字个数
      int han = 0;
      while(counter < len){
       temp = str.charAt(i);
       //System.out.println(Character.getNumericValue(str.charAt(3)));
       if(Character.getNumericValue(temp)!=-1){
        //遇到字母的时候
        result = result +temp;
        counter++;
        i++;
        
       }else{
        //遇到汉字的时候,作为unicode字符,汉字的整数值是-1
        result = result +temp;
        counter = counter +2;
        i++;
        han = han +1;
       }
      }
      
      if(counter > len){
       if(len ==1){
        result = "";
       }else{
        result = result.substring(0,counter-(han+1));
       }
      }
      
      System.out.println("result       "+ result);}
      

  11.   


    public class MyTest1 {

    public static void main(String[] args) throws UnsupportedEncodingException {
    String str="ad汗骄傲asf";
    StringBuilder str1=substring(str,5);
    System.out.println(str1);
    }
     public static StringBuilder substring(String str, int count){
     StringBuilder tempSring =new StringBuilder();
     int tempCount=0;
     String [] strarray=str.split("");
    for(int i=1;i<strarray.length;i++){
    tempCount+=strarray[i].getBytes().length;
    tempSring=tempSring.append(strarray[i]);
    if(tempCount==count){
    break;
    }
    else if(tempCount==count-1){
    break;
    }
    }
    return tempSring;
     }
    }
    要求汉字输出的时候else if(tempCount==count-1){中的-改为+