<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
    主站蜘蛛池模板: www国产亚洲精品久久久日本| 69av免费视频| 亚洲精品在线视频| 免费手机在线看片| 亚洲爽爽一区二区三区| 成人免费网站久久久| 亚洲精品综合久久| 女人隐私秘视频黄www免费| 亚洲精品高清无码视频| 久久国产精品免费专区| 亚洲综合一区二区国产精品| 3d动漫精品啪啪一区二区免费| 亚洲黄色免费网址| 猫咪社区免费资源在线观看| 日韩色视频一区二区三区亚洲| 免费一区二区三区四区五区| 一级毛片视频免费观看| 国产亚洲综合久久系列| 亚洲免费闲人蜜桃| 亚洲国产av玩弄放荡人妇 | 亚洲福利一区二区| 永久免费AV无码国产网站| 美女又黄又免费的视频| 国产成人精品日本亚洲专区61| 在线观看免费播放av片| 亚洲人成电影青青在线播放| 日本最新免费不卡二区在线| 免费无码H肉动漫在线观看麻豆| 久久久久亚洲AV无码麻豆| 免费黄网在线观看| 99在线免费视频| 中文字幕亚洲情99在线| 亚洲av无码天堂一区二区三区 | 日韩精品无码人妻免费视频| 国产免费牲交视频免费播放| 久久精品国产亚洲AV香蕉| 国产在线98福利播放视频免费| 国产麻豆成人传媒免费观看| 亚洲七久久之综合七久久| 中文字幕在线亚洲精品 | 一区二区三区亚洲|