求助中英文字符串截取
搜索了很多都是实现substring(int   beginIndex)功能的,不知道substring(int   beginIndex,int   endIndex)要怎么实现?
------解决方案--------------------substring 方法   
 返回位于 String 对象中指定位置的子字符串。   
 strVariable.substring(start, end) 
  "String Literal ".substring(start, end) 
 参数   
 start   
 指明子字符串的起始位置,该索引从 0 开始起算。   
 end   
 指明子字符串的结束位置,该索引从 0 开始起算。 
 说明   
 substring 方法将返回一个包含从 start 到最后(不包含 end )的子字符串的字符串。   
 substring 方法使用 start 和 end 两者中的较小值作为子字符串的起始点。例如, strvar.substring(0, 3) 和 strvar.substring(3, 0) 将返回相同的子字符串。   
 如果 start 或 end 为 NaN 或者负数,那么将其替换为0。   
 子字符串的长度等于 start 和 end 之差的绝对值。例如,在 strvar.substring(0, 3) 和 strvar.substring(3, 0) 返回的子字符串的的长度是 3。 
 示例   
 下面的示例演示了 substring 方法的用法。   
 function SubstringDemo(){ 
    var ss;                         // 声明变量。 
    var s =  "The rain in Spain falls mainly in the plain.. "; 
    ss = s.substring(12, 17);   // 取子字符串。 
    return(ss);                     // 返回子字符串。 
 }   
------解决方案--------------------怎么不行?绝对可以 
 import java.util.*; 
 class Test 
 { 
 	public static void main(String args[]) 
 	{ 
 String str= "ab我是c积极 "; 
 String sub=str.substring(1,5); 
 System.out.println(sub); 
 	} 
 } 
------解决方案--------------------刚刚测试是可以的..比如楼上的运行结果就是: 
 b我是c
------解决方案--------------------java处理字符串时候是变成一个字符数组,然后汉字和英文都是一个字符而已
------解决方案--------------------思路:字符串中包含有汉字、字母、数字和其它特殊字符。其中汉字存放2字节,且每个字节的ASCII值均小于0,其它字符的ASCII均大于等于0。当前定位为index。先判断此位置字符是否为字母,如果是则很好处理;关键问题在于如果是汉字,则从此汉字向前后查找,直到遇上第一个字母,对此字母到汉字的距离对2求余数,若为0,则index是汉字的后一个字节,若不为0则index为汉字的前一个字符。 
 代码如下:   
 public class Test { 
     public static void main(String[] args){ 
         String str =  "A中b国日日 "; 
         System.out.println(subString(str,5,10)); 
     } 
 	static String subString(String str,int beginIndex,int endIndex){ 
 	    byte[] bt = str.getBytes(); 
 	    int len = bt.length; 
 	    int tempBegin = beginIndex - 1; 
 	    int tempEnd = endIndex - 1; 
 	    if (bt[tempBegin] > = 0 && bt[tempEnd] > = 0){ 
 	        return new String(bt,tempBegin,endIndex - beginIndex + 1); 
 	    } 
 	    else if(bt[tempBegin] > = 0 && bt[tempEnd]  < 0){ 
 	        tempEnd = findPosition(str,tempEnd); 
 	        int end = Math.abs(endIndex - 1 - tempEnd) % 2; 
 	        if (end != 0){ 
 	            return new String(bt,tempBegin,endIndex - beginIndex); 
 	        }else{ 
 	            return new String(bt,tempBegin,endIndex - beginIndex + 1); 
 	        } 
 	    } 
 	    else if(bt[tempBegin]  < 0 && bt[tempEnd] > = 0){ 
 	        tempBegin = findPosition(str,tempBegin); 
 	        int begin = Math.abs(tempBegin - beginIndex + 1) % 2; 
 	        if (begin != 0){ 
 	            return new String(bt,beginIndex,endIndex - beginIndex); 
 	        }else{ 
 	            return new String(bt,beginIndex - 1,endIndex - beginIndex + 1); 
 	        } 
 	    } 
 	    else if(bt[tempBegin]  < 0 && bt[tempEnd]  < 0){ 
 	        tempBegin = findPosition(str,tempBegin); 
 	        if (tempBegin == -1){ 
 	            return null;//字符串全部为汉字,我没做处理,很简单。 
 	        } 
 	        tempEnd = findPosition(str,tempEnd); 
 	        int begin = Math.abs(tempBegin - beginIndex + 1) % 2; 
 	        int end = Math.abs(endIndex - 1 - tempEnd) % 2;