<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日韩综合一区尤物 | 亚洲av永久无码精品表情包| 亚洲免费人成在线视频观看| 亚洲黄色在线网站| 韩国二级毛片免费播放| 一级中文字幕乱码免费| 久久久久亚洲精品日久生情| 日韩免费视频网站| 97在线免费视频| 亚洲13又紧又嫩又水多| 久久久久久亚洲精品不卡| 美女内射毛片在线看免费人动物 | 亚洲AV无码国产剧情| 国产亚洲日韩在线三区| 黄色成人网站免费无码av| 中国极品美軳免费观看| 亚洲人成影院午夜网站| 亚洲伊人久久综合中文成人网| **俄罗斯毛片免费| www.av在线免费观看| 亚洲一区二区久久| 亚洲成a人片在线观看无码专区| 成人免费一区二区三区在线观看| 免费人成黄页在线观看日本| 国产成人精品亚洲| 亚洲一欧洲中文字幕在线| 国产偷国产偷亚洲清高动态图| 四虎成人免费影院网址| 99热这里只有精品6免费| 人禽伦免费交视频播放| 亚洲偷偷自拍高清| 亚洲人成在线播放网站岛国| 亚洲一级特黄大片无码毛片 | 国产乱子伦精品免费女| 永久看日本大片免费35分钟| 99在线免费视频| 免费人成又黄又爽的视频在线电影| 亚洲91精品麻豆国产系列在线| 亚洲国产美国国产综合一区二区| 久久精品国产亚洲7777| 波多野结衣视频在线免费观看|