<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-153  評論-235  文章-19  trackbacks-0
        用String.substring方法,不小心會有越界異常。現(xiàn)實現(xiàn)一個沒拋出越界異常,越界就返回null,不過直接返回的再用其它方法,可能有Null異常。現(xiàn)還實現(xiàn)可以負index的,可能逆向的。
    package com.chenlb.util;   
      
    public class StringUtil {   
           
        
    /**  
         * start與end均可負數(shù)<br/>  
         * start < end正向取, start > end逆向取<br/>  
         * 示例:str="I am chenlb"<br/>  
         * StringUtil.substring(str, 0, 12) -> null<br/>  
         * StringUtil.substring(str, 12, 12) -> null<br/>  
         * StringUtil.substring(str, 12, 13) -> null<br/>  
         * StringUtil.substring(str, 4, 4) -> ""<br/>  
         * StringUtil.substring(str, 0, 4) -> "I am"<br/>  
         * StringUtil.substring(str, -4, -1) -> "enl"<br/>  
         * StringUtil.substring(str, -2, 4) -> "lbI am"<br/>  
         * StringUtil.substring(str, 4, 0) -> "ma I"<br/>  
         * StringUtil.substring(str, -1, -4) -> "lne"<br/>  
         * StringUtil.substring(str, 1, -4) -> "Iblne"<br/>  
         * StringUtil.substring(str, 0, -4) -> "blne"<br/>  
         * StringUtil.substring(str, -4, 0) -> "enlb"<br/>  
         * 
    @return 越界返回null, start==end返回空  
         * 
    @author chenlb 2008-6-18 下午12:39:51  
         
    */  
        
    public static String substring(String str, int start, int end) {   
            
    if(str == null) {   
                
    return null;   
            }   
            
    int len = str.length();   
            
    if(Math.abs(start) >= len) {   
                
    return null;   
            }   
            
    if(Math.abs(end) > len) {   
                
    return null;   
            }   
            StringBuilder sb 
    = new StringBuilder();   
            
    if(end > start) {    //正向   
                substring(sb, str, start, end);   
            } 
    else if(end == start) {   
                
    return "";   
            } 
    else {    //逆向 end < start   
                substring(sb, str, end, start);   
                sb.reverse();   
            }   
            
    return sb.toString();   
        }   
           
        
    private static void substring(StringBuilder sb, String str, int start, int end) {   
            
    int len = str.length();   
            
    if(start < 0) {   
                
    if(end < 0) {   
                    sb.append(str.substring(len
    +start, len+end));   
                } 
    else {   
                    sb.append(str.substring(len
    +start, len));   
                    sb.append(str.substring(
    0, end));   
                }   
            } 
    else {   
                sb.append(str.substring(start, end));   
            }   
        }   
    }  

    測試代碼:
    public void testSubstring() {   
            String str 
    = "I am chenlb";   
               
            assertEquals(
    null, StringUtil.substring(str, 012));   
            assertEquals(
    null, StringUtil.substring(str, 1212));   
            assertEquals(
    null, StringUtil.substring(str, 1213));   
               
            assertEquals(
    "", StringUtil.substring(str, 44));   
               
            assertEquals(
    "I am", StringUtil.substring(str, 04));   
            assertEquals(
    "am", StringUtil.substring(str, 24));   
            assertEquals(
    "I am chenlb", StringUtil.substring(str, 011));   
               
            assertEquals(
    "enl", StringUtil.substring(str, -4-1));   
            assertEquals(
    "lbI am", StringUtil.substring(str, -24));   
               
            assertEquals(
    "ma I", StringUtil.substring(str, 40));   
            assertEquals(
    "lne", StringUtil.substring(str, -1-4));   
            assertEquals(
    "Iblne", StringUtil.substring(str, 1-4));   
               
            assertEquals(
    "blne", StringUtil.substring(str, 0-4));   
            assertEquals(
    "enlb", StringUtil.substring(str, -40));   
    }  
    posted on 2008-06-24 13:53 流浪汗 閱讀(552) 評論(0)  編輯  收藏 所屬分類: JAVA/J2EE
    主站蜘蛛池模板: 亚洲男人天堂av| 亚洲一区二区三区自拍公司| 亚洲视频2020| 国产自国产自愉自愉免费24区| 四虎精品亚洲一区二区三区| 羞羞视频网站免费入口| 在线观看免费亚洲| 精品一区二区三区无码免费直播 | 亚洲最大视频网站| 四虎成年永久免费网站| 亚洲最大福利视频| 最近中文字幕mv免费高清视频7| 亚洲夂夂婷婷色拍WW47| 国产午夜免费福利红片| 一级毛片在线免费视频| 亚洲熟妇av一区二区三区| 国产日韩一区二区三免费高清| 久久亚洲成a人片| 青草草色A免费观看在线| 亚洲日韩中文字幕一区| 免费人成在线观看网站品爱网日本| 黄页免费视频播放在线播放| 国产亚洲高清不卡在线观看| 亚洲视频在线免费看| 亚洲一本一道一区二区三区| 亚洲国产精品国产自在在线| 成人久久免费网站| 亚洲av产在线精品亚洲第一站| 日本视频免费在线| 国产日韩在线视频免费播放| 久久亚洲中文字幕精品有坂深雪 | 和日本免费不卡在线v| 亚洲heyzo专区无码综合| 人人狠狠综合久久亚洲88| 波多野结衣在线免费观看| 羞羞视频免费网站含羞草| 久久国产精品亚洲综合| 免费观看男人免费桶女人视频| 久久久久久国产a免费观看不卡| 亚洲欧洲校园自拍都市| 亚洲VA综合VA国产产VA中|