[ 
https://issues.apache.org/jira/browse/LANG-1237?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15299080#comment-15299080
 ] 

Nick Manley commented on LANG-1237:
-----------------------------------

I'm not seeing this saving a lot of effort over using the substring method. 
There are three issues with it. The first is that if you are splitting a long 
string, then the arguments on the splitOnBoundary method can get a bit long. I 
wouldn't like seeing a method with a dozen numbers as the arguments. The second 
issue is what happens when you exceed the length of the String? Do you really 
want to throw an OutOfBoundsException and lose everything that you did read up 
to that point? I would think you would want to read as much as you could and 
only error on the last field that exceeds the String length. The third issue 
relates to what Sebb said about the 0-based index. Often times when working 
with fixed length formats, I know the length of each field and don't want to 
have to calculate it's offset from zero. This is especially true if I want to 
modify the order of fields, have optional fields, have different record types, 
etc. The suggested splitOnBoundary method is not very flexible for that.

I have a project at work that reads from a file where the lines are fixed 
width. I created a class called FixedWidthLineReader with methods like nextInt, 
nextString, nextDate, etc that each takes the length of the next expected field 
and can convert it to the appropriate type. I'm not sure if something like that 
is appropriate for Apache Commons Lang, but I happen to like it and it keeps 
things pretty readable.

> String Split For Fixed-Length Strings
> -------------------------------------
>
>                 Key: LANG-1237
>                 URL: https://issues.apache.org/jira/browse/LANG-1237
>             Project: Commons Lang
>          Issue Type: New Feature
>          Components: lang.text.*
>            Reporter: BELUGA BEHR
>
> Create a StringSplit method that splits on defined boundaries.
> {code:java}
> /**
>  * Used for fixed-length string formats
>  * splitOnBoundary("HelloBigWorld", 4);
>  * Returns ["Hello","BigWorld"]
>  *
>  * splitOnBoundary("HelloBigWorld", 4, 7);
>  * Returns ["Hello","Big","World"]
>  */
> String[] splitOnBoundary(String str, int... boundary);
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to