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

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

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

    隨筆-153  評(píng)論-235  文章-19  trackbacks-0
        用String.substring方法,不小心會(huì)有越界異常。現(xiàn)實(shí)現(xiàn)一個(gè)沒(méi)拋出越界異常,越界就返回null,不過(guò)直接返回的再用其它方法,可能有Null異常。現(xiàn)還實(shí)現(xiàn)可以負(fù)index的,可能逆向的。
    package com.chenlb.util;   
      
    public class StringUtil {   
           
        
    /**  
         * start與end均可負(fù)數(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));   
            }   
        }   
    }  

    測(cè)試代碼:
    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) 評(píng)論(0)  編輯  收藏 所屬分類: JAVA/J2EE
    主站蜘蛛池模板: 国产精品亚洲玖玖玖在线观看| 久久精品免费电影| 亚洲精品无码高潮喷水A片软| 日本19禁啪啪无遮挡免费动图| 亚洲AV无码成人精品区日韩| 亚洲А∨精品天堂在线| 久久精品成人免费网站| 亚洲AV日韩综合一区尤物| 亚洲一区无码中文字幕| 在线观看www日本免费网站| 蜜芽亚洲av无码一区二区三区| 亚洲精品无码不卡在线播HE| 美女被免费喷白浆视频| 一级做a毛片免费视频| 91亚洲国产在人线播放午夜| 婷婷综合缴情亚洲狠狠尤物| 95老司机免费福利| 黄页网站在线视频免费| 在线免费观看亚洲| 亚洲一区二区视频在线观看| 最近高清中文字幕无吗免费看| 大片免费观看92在线视频线视频| 亚洲视频一区在线观看| 亚洲国产人成中文幕一级二级| 嘿嘿嘿视频免费网站在线观看| 国产成人1024精品免费| 亚洲精品美女久久7777777| 亚洲精品高清视频| 亚洲精品第一国产综合精品99| AV免费网址在线观看| 女人18毛片水真多免费看| 最近2019中文字幕免费直播| 免费精品人在线二线三线区别| 免费国产在线观看不卡| 亚洲精品国产精品乱码视色| 亚洲一区二区中文| 亚洲中文字幕无码av| 一日本道a高清免费播放 | 国产亚洲精品无码成人| 亚洲欧洲免费视频| 亚洲欧美国产国产一区二区三区 |