Return-Path: X-Original-To: apmail-commons-issues-archive@minotaur.apache.org Delivered-To: apmail-commons-issues-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 4DCE218202 for ; Tue, 12 May 2015 05:46:00 +0000 (UTC) Received: (qmail 62906 invoked by uid 500); 12 May 2015 05:46:00 -0000 Delivered-To: apmail-commons-issues-archive@commons.apache.org Received: (qmail 62815 invoked by uid 500); 12 May 2015 05:46:00 -0000 Mailing-List: contact issues-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: issues@commons.apache.org Delivered-To: mailing list issues@commons.apache.org Received: (qmail 62794 invoked by uid 99); 12 May 2015 05:46:00 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 12 May 2015 05:46:00 +0000 Date: Tue, 12 May 2015 05:45:59 +0000 (UTC) From: "ASF GitHub Bot (JIRA)" To: issues@commons.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (LANG-1124) Add split by length methods in StringUtils MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/LANG-1124?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14539285#comment-14539285 ] ASF GitHub Bot commented on LANG-1124: -------------------------------------- Github user britter commented on the pull request: https://github.com/apache/commons-lang/pull/75#issuecomment-101139996 @thiagoh no, we have to discuss what I've commented. > Add split by length methods in StringUtils > ------------------------------------------ > > Key: LANG-1124 > URL: https://issues.apache.org/jira/browse/LANG-1124 > Project: Commons Lang > Issue Type: New Feature > Components: lang.* > Reporter: Loic Guibert > > Add methods to split a String by fixed lengths : > {code:java} > public static String[] splitByLength(String str, int ... lengths); > public static String[] splitByLengthRepeatedly(String str, int ... lengths); > {code} > Detail : > {code:java} > /** > *

Split a String into an array, using an array of fixed string lengths.

> * > *

If not null String input, the returned array size is same as the input lengths array.

> * > *

A null input String returns {@code null}. > * A {@code null} or empty input lengths array returns an empty array. > * A {@code 0} in the input lengths array results in en empty string.

> * > *

Extra characters are ignored (ie String length greater than sum of split lengths). > * All empty substrings other than zero length requested, are returned {@code null}.

> * > *
>  * StringUtils.splitByLength(null, *)      = null
>  * StringUtils.splitByLength("abc")        = []
>  * StringUtils.splitByLength("abc", null)  = []
>  * StringUtils.splitByLength("abc", [])    = []
>  * StringUtils.splitByLength("", 2, 4, 1)  = [null, null, null]
>  *
>  * StringUtils.splitByLength("abcdefg", 2, 4, 1)     = ["ab", "cdef", "g"]
>  * StringUtils.splitByLength("abcdefghij", 2, 4, 1)  = ["ab", "cdef", "g"]
>  * StringUtils.splitByLength("abcdefg", 2, 4, 5)     = ["ab", "cdef", "g"]
>  * StringUtils.splitByLength("abcdef", 2, 4, 1)      = ["ab", "cdef", null]
>  *
>  * StringUtils.splitByLength(" abcdef", 2, 4, 1)     = [" a", "bcde", "f"]
>  * StringUtils.splitByLength("abcdef ", 2, 4, 1)     = ["ab", "cdef", " "]
>  * StringUtils.splitByLength("abcdefg", 2, 4, 0, 1)  = ["ab", "cdef", "", "g"]
>  * StringUtils.splitByLength("abcdefg", -1)          = {@link IllegalArgumentException}
>  * 
> * > * @param str the String to parse, may be null > * @param lengths the string lengths where to cut, may be null, must not be negative > * @return an array of splitted Strings, {@code null} if null String input > * @throws IllegalArgumentException > * if one of the lengths is negative > */ > public static String[] splitByLength(String str, int ... lengths); > /** > *

Split a String into an array, using an array of fixed string lengths repeated as > * many times as necessary to reach the String end.

> * > *

If not null String input, the returned array size is a multiple of the input lengths array.

> * > *

A null input String returns {@code null}. > * A {@code null} or empty input lengths array returns an empty array. > * A {@code 0} in the input lengths array results in en empty string.

> * > *

All empty substrings other than zero length requested and following substrings, > * are returned {@code null}.

> * > *
>  * StringUtils.splitByLengthRepeated(null, *)      = null
>  * StringUtils.splitByLengthRepeated("abc")        = []
>  * StringUtils.splitByLengthRepeated("abc", null)  = []
>  * StringUtils.splitByLengthRepeated("abc", [])    = []
>  * StringUtils.splitByLengthRepeated("", 2, 4, 1)  = [null, null, null]
>  *
>  * StringUtils.splitByLengthRepeated("abcdefghij", 2, 3)     = ["ab", "cde", "fg", "hij"]
>  * StringUtils.splitByLengthRepeated("abcdefgh", 2, 3)       = ["ab", "cde", "fg", "h"]
>  * StringUtils.splitByLengthRepeated("abcdefg", 2, 3)        = ["ab", "cde", "fg", null]
>  *
>  * StringUtils.splitByLengthRepeated(" abcdef", 2, 3)        = [" a", "bcd", "ef", null]
>  * StringUtils.splitByLengthRepeated("abcdef ", 2, 3)        = ["ab", "cde", "f ", null]
>  * StringUtils.splitByLengthRepeated("abcdef", 2, 3, 0, 1)   = ["ab", "cde", "", "f"]
>  * StringUtils.splitByLengthRepeated("abcdefg", 2, 3, 0, 1)  = ["ab", "cde", "", "f",
>  *                                                              "g", null, null, null]
>  * StringUtils.splitByLengthRepeated("abcdefgh", 2, 0, 1, 0) = ["ab", "", "c", "",
>  *                                                              "de", "", "f", "",
>  *                                                              "gh", "", null, null]
>  * StringUtils.splitByLengthRepeated("abcdefg", 2, 0, 1, 0) = ["ab", "", "c", "",
>  *                                                              "de", "", "f", "",
>  *                                                              "g", null, null, null]
>  * StringUtils.splitByLengthRepeated("abcdefg", -1)          = {@link IllegalArgumentException}
>  * StringUtils.splitByLengthRepeated("abcdefg", 0, 0)        = {@link IllegalArgumentException}
>  * 
> * > * @param str the String to parse, may be null > * @param lengths the string lengths where to cut, may be null, must not be negative > * @return an array of splitted Strings, {@code null} if null String input > * @throws IllegalArgumentException > * if one of the lengths is negative or if lengths sum is less than 1 > */ > public static String[] splitByLengthRepeatedly(String str, int... lengths); > {code} > See PR #75 : https://github.com/apache/commons-lang/pull/75 -- This message was sent by Atlassian JIRA (v6.3.4#6332)