Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Remove doubled letter from a string using java

Tags:

java

string

regex

I need to remove a doubled letter from a string using regex operations in java. Eg: PRINCEE -> PRINCE APPLE -> APLE

like image 606
saranya Avatar asked Jan 18 '11 14:01

saranya


People also ask

How do I remove duplicates from a string in Java 8?

You can use the Stream. distinct() method to remove duplicates from a Stream in Java 8 and beyond. The distinct() method behaves like a distinct clause of SQL, which eliminates duplicate rows from the result set.


2 Answers

Simple Solution (remove duplicate characters)

Like this:

final String str = "APPLEE";
String replaced = str.replaceAll("(.)\\1", "$1");
System.out.println(replaced);

Output:

APLE

Not just any Chracters, Letters only

As @Jim comments correctly, the above matches any double character, not just letters. Here are a few variations that just match letters:

// the basics, ASCII letters. these two are equivalent:
str.replaceAll("([A-Za-z])\\1", "$1");
str.replaceAll("(\\p{Alpha})\\1", "$1");

// Unicode Letters
str.replaceAll("(\\p{L})\\1", "$1");

// anything where Character.isLetter(ch) returns true
str.replaceAll("(\\p{javaLetter})\\1", "$1");

References:

For additional reference:

  1. Character.isLetter(ch) (javadocs)
  2. any method in Character of the form Character.isXyz(char) enables a pattern named \p{javaXyz} (mind the capitalization). This mechanism is described in the Pattern javadocs
  3. Unicode blocks and categories can also be matched with the \p and \P constructs as in Perl. \p{prop} matches if the input has the property prop, while \P{prop} does not match if the input has that property. This mechanism is also described in the Pattern javadocs
like image 87
Sean Patrick Floyd Avatar answered Sep 18 '22 13:09

Sean Patrick Floyd


String s = "...";
String replaced = s.replaceAll( "([A-Z])\\1", "$1" );
like image 35
biziclop Avatar answered Sep 16 '22 13:09

biziclop