这是indexloc提供的服务,不要输入任何密码
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.baeldung.minusoperation;

import java.util.stream.Collectors;

/**
* Container for all implementations of what could be considered a 'String-minus-operations'
*/
public class StringMinusOperations {

public static String removeLastCharBySubstring(String sentence) {
return sentence.substring(0, sentence.length() - 1);
}

public static String removeTrailingStringBySubstring(String sentence, String lastSequence) {
var trailing = sentence.substring(sentence.length() - lastSequence.length());
if(trailing.equals(lastSequence)) {
return sentence.substring(0, sentence.length() - lastSequence.length());
} else {
return sentence;
}
}

public static String minusByReplace(String sentence, char removeMe) {
return sentence.replace(String.valueOf(removeMe), "");
}

public static String minusByReplace(String sentence, String removeMe) {
return sentence.replace(removeMe, "");
}

public static String minusByStream(String sentence, char removeMe) {
return sentence.chars()
.mapToObj(c -> (char) c)
.filter(it -> !it.equals(removeMe))
.map(String::valueOf)
.collect(Collectors.joining());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package com.baeldung.minusoperation;

import static org.assertj.core.api.Assertions.assertThat;

import org.junit.Test;

public class StringMinusOperationsUnitTest {

@Test
public void givenNotBlankString_whenRemovingLastChar_thenReturnOriginalWithoutLastChar() {
var original = "Don't give up!";

var result = StringMinusOperations.removeLastCharBySubstring(original);

assertThat(result).doesNotContain("!")
.isEqualTo("Don't give up"); // no '!' at the end
}

@Test
public void givenNotBlankString_whenRemovingLastString_thenReturnOriginalWithoutLastString() {
var original = "Don't give up!";

var result = StringMinusOperations.removeTrailingStringBySubstring(original, "up!");

assertThat(result).doesNotContain("up!")
.isEqualTo("Don't give "); // no 'up!' at the end
}

@Test
public void givenNotBlankString_whenRemovingLastStringThatDoesNotMatch_thenReturnOriginalString() {
var original = "Don't give up!";

var result = StringMinusOperations.removeTrailingStringBySubstring(original, "foo");

assertThat(result).isEqualTo(original);
}

@Test
public void givenNotBlankString_whenRemovingSpecificChar_thenReturnOriginalWithoutThatChar() {
var original = "Don't give up!";
var toRemove = 't';

var result = StringMinusOperations.minusByReplace(original, toRemove);

assertThat(result).doesNotContain(String.valueOf(toRemove))
.isEqualTo("Don' give up!"); // no 't'
}

@Test
public void givenNotBlankString_whenRemovingSpecificString_thenReturnOriginalWithoutThatString() {
var original = "Don't give up!";
var toRemove = "Don't";

var result = StringMinusOperations.minusByReplace(original, toRemove);

assertThat(result).doesNotContain(toRemove)
.isEqualTo(" give up!"); // no 'Don't'
}

@Test
public void givenNotBlankString_whenRemovingSpecificStringByStream_thenReturnOriginalWithoutThatString() {
var original = "Don't give up!";
var toRemove = ' ';

var result = StringMinusOperations.minusByStream(original, toRemove);

assertThat(result).doesNotContain(String.valueOf(toRemove))
.isEqualTo("Don'tgiveup!"); // no blanks
}
}