BAEL-2140 (#5092)
This commit is contained in:
parent
3b9ce7537f
commit
b7aa6a2caa
|
@ -0,0 +1,45 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package com.baeldung.string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author swpraman
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class AppendCharAtPositionX {
|
||||||
|
|
||||||
|
public String addCharUsingCharArray(String str, char ch, int position) {
|
||||||
|
validate(str, position);
|
||||||
|
int len = str.length();
|
||||||
|
char[] updatedArr = new char[len + 1];
|
||||||
|
str.getChars(0, position, updatedArr, 0);
|
||||||
|
updatedArr[position] = ch;
|
||||||
|
str.getChars(position, len, updatedArr, position + 1);
|
||||||
|
return new String(updatedArr);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String addCharUsingSubstring(String str, char ch, int position) {
|
||||||
|
validate(str, position);
|
||||||
|
return str.substring(0, position) + ch + str.substring(position);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String addCharUsingStringBuilder(String str, char ch, int position) {
|
||||||
|
validate(str, position);
|
||||||
|
StringBuilder sb = new StringBuilder(str);
|
||||||
|
sb.insert(position, ch);
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validate(String str, int position) {
|
||||||
|
if (str == null) {
|
||||||
|
throw new IllegalArgumentException("Str should not be null");
|
||||||
|
}
|
||||||
|
int len = str.length();
|
||||||
|
if (position < 0 || position > len) {
|
||||||
|
throw new IllegalArgumentException("position[" + position + "] should be "
|
||||||
|
+ "in the range 0.." + len + " for string " + str);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,110 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package com.baeldung.string;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author swpraman
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class AppendCharAtPositionXUnitTest {
|
||||||
|
|
||||||
|
private AppendCharAtPositionX appendCharAtPosition = new AppendCharAtPositionX();
|
||||||
|
private String word = "Titanc";
|
||||||
|
private char letter = 'i';
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenUsingCharacterArrayAndCharacterAddedAtBeginning_shouldAddCharacter() {
|
||||||
|
assertEquals("iTitanc", appendCharAtPosition.addCharUsingCharArray(word, letter, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenUsingSubstringAndCharacterAddedAtBeginning_shouldAddCharacter() {
|
||||||
|
assertEquals("iTitanc", appendCharAtPosition.addCharUsingSubstring(word, letter, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenUsingStringBuilderAndCharacterAddedAtBeginning_shouldAddCharacter() {
|
||||||
|
assertEquals("iTitanc", appendCharAtPosition.addCharUsingStringBuilder(word, letter, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenUsingCharacterArrayAndCharacterAddedAtMiddle_shouldAddCharacter() {
|
||||||
|
assertEquals("Titianc", appendCharAtPosition.addCharUsingCharArray(word, letter, 3));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenUsingSubstringAndCharacterAddedAtMiddle_shouldAddCharacter() {
|
||||||
|
assertEquals("Titianc", appendCharAtPosition.addCharUsingSubstring(word, letter, 3));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenUsingStringBuilderAndCharacterAddedAtMiddle_shouldAddCharacter() {
|
||||||
|
assertEquals("Titianc", appendCharAtPosition.addCharUsingStringBuilder(word, letter, 3));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenUsingCharacterArrayAndCharacterAddedAtEnd_shouldAddCharacter() {
|
||||||
|
assertEquals("Titanci", appendCharAtPosition.addCharUsingCharArray(word, letter, word.length()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenUsingSubstringAndCharacterAddedAtEnd_shouldAddCharacter() {
|
||||||
|
assertEquals("Titanci", appendCharAtPosition.addCharUsingSubstring(word, letter, word.length()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenUsingStringBuilderAndCharacterAddedAtEnd_shouldAddCharacter() {
|
||||||
|
assertEquals("Titanci", appendCharAtPosition.addCharUsingStringBuilder(word, letter, word.length()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected=IllegalArgumentException.class)
|
||||||
|
public void whenUsingCharacterArrayAndCharacterAddedAtNegativePosition_shouldThrowException() {
|
||||||
|
appendCharAtPosition.addCharUsingStringBuilder(word, letter, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected=IllegalArgumentException.class)
|
||||||
|
public void whenUsingSubstringAndCharacterAddedAtNegativePosition_shouldThrowException() {
|
||||||
|
appendCharAtPosition.addCharUsingStringBuilder(word, letter, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected=IllegalArgumentException.class)
|
||||||
|
public void whenUsingStringBuilderAndCharacterAddedAtNegativePosition_shouldThrowException() {
|
||||||
|
appendCharAtPosition.addCharUsingStringBuilder(word, letter, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected=IllegalArgumentException.class)
|
||||||
|
public void whenUsingCharacterArrayAndCharacterAddedAtInvalidPosition_shouldThrowException() {
|
||||||
|
appendCharAtPosition.addCharUsingStringBuilder(word, letter, word.length() + 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected=IllegalArgumentException.class)
|
||||||
|
public void whenUsingSubstringAndCharacterAddedAtInvalidPosition_shouldThrowException() {
|
||||||
|
appendCharAtPosition.addCharUsingStringBuilder(word, letter, word.length() + 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected=IllegalArgumentException.class)
|
||||||
|
public void whenUsingStringBuilderAndCharacterAddedAtInvalidPosition_shouldThrowException() {
|
||||||
|
appendCharAtPosition.addCharUsingStringBuilder(word, letter, word.length() + 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected=IllegalArgumentException.class)
|
||||||
|
public void whenUsingCharacterArrayAndCharacterAddedAtPositionXAndStringIsNull_shouldThrowException() {
|
||||||
|
appendCharAtPosition.addCharUsingStringBuilder(null, letter, 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected=IllegalArgumentException.class)
|
||||||
|
public void whenUsingSubstringAndCharacterAddedAtPositionXAndStringIsNull_shouldThrowException() {
|
||||||
|
appendCharAtPosition.addCharUsingStringBuilder(null, letter, 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected=IllegalArgumentException.class)
|
||||||
|
public void whenUsingStringBuilderAndCharacterAddedAtPositionXAndStringIsNull_shouldThrowException() {
|
||||||
|
appendCharAtPosition.addCharUsingStringBuilder(null, letter, 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue