On Sat, 2 Aug 2025 at 15:08, Gilles Sadowski <gillese...@gmail.com> wrote:
>
> Hi.
>
> Le sam. 2 août 2025 à 14:53, Kunal Bhangale
> <bhangalekunal2631...@gmail.com> a écrit :
> >
> > Hi  Gilles,
> >
> > Thanks for the earlier suggestion to consider Apache Commons Text for these
> > utility methods.
> >
> > After reviewing the project, I noticed that Commons Text doesn’t currently
> > have a general-purpose utility class like `StringUtils` in Commons Lang.
>
> Probably rightly so, because "...Utils" classes are better avoided.[1]
>
> >
> > I’d like to ask:
> > Would it be appropriate to introduce a new class such as `TextUtils` under
> > the `org.apache.commons.text` package to house general-purpose text-related
> > utility methods (like smart truncation, word counting, title casing, etc.)?
>
> Each of the examples inside the parentheses should be discussed separately
> in order to determine whether they are "general-purpose".  Indeed, each of
>  * smart truncation
>  * word counting
>  * title casing
> has specific features and potential variants that
>  * either warrant a class of its own (e.g. "truncation"),
>  * or may be too ill-defined (e.g. capitalization of a title depends on the
>    language) to belong in a general-purpose library.
>
> Also, we should beware of implementing functionality that already exists
> (such as "countWords"[2])

Agreed.

It would be helpful to provide some real-world use cases.
As well as helping to justify adding the new methods, these could be
used as some of the test cases.

> Regards,
> Gilles
>
> [1] https://stackoverflow.com/questions/3340032/are-utility-classes-evil
> [2] https://stackoverflow.com/questions/5864159/count-words-in-a-string-method
>
> >
> > Alternatively, is there an existing class where such methods would be more
> > appropriate?
> >
> > Looking forward to your suggestions and guidance on this.
> >
> > Best regards,
> > Kunal Bhangale
> >
> > On Sat, Aug 2, 2025 at 2:41 PM Gilles Sadowski <gillese...@gmail.com> wrote:
> >
> > > Hi.
> > >
> > > Le sam. 2 août 2025 à 10:55, Kunal Bhangale
> > > <bhangalekunal2631...@gmail.com> a écrit :
> > > >
> > > > Hi Commons Lang Developers,
> > > >
> > > > I would like to propose the addition of some new utility methods to
> > > > `StringUtils` in Apache Commons Lang. These methods are commonly needed
> > > in
> > > > real-world projects but currently not available in the library.
> > > >
> > > > Here are some initial ideas:
> > > >
> > > >
> > > > 1. *findAllOccurrences(String str, String subStr)*
> > > >    - Description: Returns a list of all indexes where a substring occurs
> > > in
> > > > the main string.
> > > >    - Example: findAllOccurrences("abcabc", "a") → [0, 3]
> > > >
> > > > 2. *toTitleCase(String str)*
> > > >    - Description: Converts each word's first character to uppercase and
> > > the
> > > > rest to lowercase.
> > > >    - Example: toTitleCase("hello world") → "Hello World"
> > > >
> > > > 3. *smartTruncate(String str, int maxLength)*
> > > >    - Description: Truncates the string to the nearest full word under 
> > > > the
> > > > limit and appends "..." if needed.
> > > >    - Example: smartTruncate("This is a long sentence", 10) → "This 
> > > > is..."
> > > >
> > > > 4. *removeRepeatedCharacters(String str)*
> > > >    - Description: Removes consecutive duplicate characters.
> > > >    - Example: removeRepeatedCharacters("aaabbbcccaaa") → "abca"
> > > >
> > > > 5. *isTitleCase(String str)*
> > > >    - Description: Checks if the input is in title case format.
> > > >    - Example: isTitleCase("Hello World") → true
> > > >
> > > > 6. *countWords(String str)*
> > > >    - Description: Returns the number of words in the input string.
> > > >    - Example: countWords("Apache Commons Lang") → 3
> > > >
> > > >
> > > > I’d be happy to implement these methods and write appropriate JUnit
> > > tests.
> > > > If the community finds these valuable, I can create a JIRA issue and
> > > start
> > > > working on the patch.
> > >
> > > Thanks for your interest in contributing to "Commons".
> > >
> > > > Looking forward to your feedback!
> > >
> > > Your proposed utilities seem better suited to [Text] than [Lang].
> > > Did you have a look there:
> > >   https://commons.apache.org/text
> > > ?
> > >
> > > Regards,
> > > Gilles
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> > > For additional commands, e-mail: dev-h...@commons.apache.org
> > >
> > >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to