Let's make sure there is:
- a real world use case, as opposed nice-to-have in an imaginary app
- doesn't duplicate anything in Commons Lang or Text.

Gary

On Sat, Aug 2, 2025, 10:42 sebb <seb...@gmail.com> wrote:

> 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