From 0723f0889ac305876e3a3a60db9a9b69f43c2c7e Mon Sep 17 00:00:00 2001 From: Urs Heusser Date: Sat, 10 Sep 2022 11:38:52 +0200 Subject: [PATCH 1/4] =?UTF-8?q?test=20f=C3=BCr=20pullrequest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- clean-code-challanges/src/main/java/Acronym.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clean-code-challanges/src/main/java/Acronym.java b/clean-code-challanges/src/main/java/Acronym.java index 5e00939..1801a77 100644 --- a/clean-code-challanges/src/main/java/Acronym.java +++ b/clean-code-challanges/src/main/java/Acronym.java @@ -8,7 +8,7 @@ class Acronym { Acronym(String phrase) { - +String test = "test"; } String get() { From 9c8ef3f30a972448ea0c785040821a3da444f5b3 Mon Sep 17 00:00:00 2001 From: Urs Heusser Date: Sat, 17 Sep 2022 15:46:33 +0200 Subject: [PATCH 2/4] =?UTF-8?q?L=C3=B6sung=20Acronym=20Urs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/Acronym.java | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/clean-code-challanges/src/main/java/Acronym.java b/clean-code-challanges/src/main/java/Acronym.java index 1801a77..bb9ca73 100644 --- a/clean-code-challanges/src/main/java/Acronym.java +++ b/clean-code-challanges/src/main/java/Acronym.java @@ -1,3 +1,5 @@ +import java.util.Locale; + /** * Convert a phrase to its acronym. * @@ -6,13 +8,31 @@ * Help generate some jargon by writing a program that converts a long name like Portable Network Graphics to its acronym (PNG). */ class Acronym { - + private String phrase; Acronym(String phrase) { -String test = "test"; + this.phrase = phrase; } String get() { - return null; + this.phrase = replaceSpecialChars(); + this.phrase = cleanupSpaces(); + this.phrase = getFirstCharsAfterSpaces(); + return this.phrase; + } + + private String getFirstCharsAfterSpaces() { + String resultString = ""; + String[] words = phrase.split(" "); + for(String word : words) { + resultString += word.substring(0,1).toUpperCase(Locale.ROOT); + } + return resultString; + } + private String replaceSpecialChars() { + return phrase.replaceAll("[^a-zA-Z0-9']", " "); + } + private String cleanupSpaces() { + return phrase.replaceAll("\\s{2,}", " ").trim(); } } From 7498f0229644ffc3e246e794f8453cc30e46e940 Mon Sep 17 00:00:00 2001 From: Urs Heusser Date: Sat, 1 Oct 2022 11:33:03 +0200 Subject: [PATCH 3/4] =?UTF-8?q?IsogramChecker=20umgesetzt=20-=20tests=20gr?= =?UTF-8?q?=C3=BCn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/IsogramChecker.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/clean-code-challanges/src/main/java/IsogramChecker.java b/clean-code-challanges/src/main/java/IsogramChecker.java index 00d4c74..edfe2fc 100644 --- a/clean-code-challanges/src/main/java/IsogramChecker.java +++ b/clean-code-challanges/src/main/java/IsogramChecker.java @@ -1,3 +1,7 @@ +import java.util.Locale; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + /** * Determine if a word or phrase is an isogram. * @@ -16,7 +20,25 @@ class IsogramChecker { boolean isIsogram(String phrase) { - throw new UnsupportedOperationException("Delete this statement and write your own implementation."); + phrase = removeSpacesAndHypens(phrase); + return !checkForDoubleChars(phrase); + } + + private Boolean checkForDoubleChars(String phrase) { + String partPhraseToTest = phrase.toLowerCase(Locale.ROOT); + for (char testedCharacter : partPhraseToTest.toCharArray()) { + partPhraseToTest = partPhraseToTest.substring(1); + if(partPhraseToTest.indexOf(testedCharacter) != -1) { + return true; + } + } + return false; } + private String removeSpacesAndHypens(String phrase) { + return phrase.replace(" ", "").replace("-", ""); + } + + + } From c092a4ec020f583253ebc05975ff45904763e505 Mon Sep 17 00:00:00 2001 From: Urs Heusser Date: Sat, 1 Oct 2022 11:41:51 +0200 Subject: [PATCH 4/4] clean code: more readable vars --- clean-code-challanges/src/main/java/IsogramChecker.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/clean-code-challanges/src/main/java/IsogramChecker.java b/clean-code-challanges/src/main/java/IsogramChecker.java index edfe2fc..6cfec9f 100644 --- a/clean-code-challanges/src/main/java/IsogramChecker.java +++ b/clean-code-challanges/src/main/java/IsogramChecker.java @@ -26,9 +26,10 @@ boolean isIsogram(String phrase) { private Boolean checkForDoubleChars(String phrase) { String partPhraseToTest = phrase.toLowerCase(Locale.ROOT); - for (char testedCharacter : partPhraseToTest.toCharArray()) { + for (char charUnderTest : partPhraseToTest.toCharArray()) { partPhraseToTest = partPhraseToTest.substring(1); - if(partPhraseToTest.indexOf(testedCharacter) != -1) { + boolean charFoundInPartPhrase = partPhraseToTest.indexOf(charUnderTest) != -1; + if(charFoundInPartPhrase) { return true; } }