# How to “Dashatize It” in Java

## The challenge

Given a variable `n`,

If `n` is an integer, Return a string with dash`'-'`marks before and after each odd integer, but do not begin or end the string with a dash mark. If `n` is negative, then the negative sign should be removed.

If `n` is not an integer, return an empty value.

Ex:

``````dashatize(274) -> '2-7-4'
dashatize(6815) -> '68-1-5'
``````

## The solution in Java code

Option 1:

``````public class Solution {
public static String dashatize(int num) {
String n = String.valueOf(Math.abs(num)).replaceAll("-", "");
return java.util.Arrays.asList(n.split("")).stream()
.map(ch -> Integer.valueOf(ch) % 2 !=0 ? "-"+ch+"-" : ch)
.collect(java.util.stream.Collectors.joining(""))
.replaceAll("--", "-")
.replaceAll("^-+", "")
.replaceAll("-+\$", "");
}
}
``````

Option 2:

``````public class Solution {
public static String dashatize(final int number) {
return String.valueOf(number)
.replaceAll("([13579])", "-\$1-")
.replaceAll("--", "-")
.replaceAll("^-|-\$", "");
}
}
``````

Option 3:

``````import java.util.*;
public class Solution {
public static String dashatize(int num) {
String str = String.valueOf(num);
if(str.charAt(0) == '-')
str = str.substring(1);
return String.join("-",str.split("(?=[1,3,5,7,9])|(?<=[1,3,5,7,9])"));
}
}
``````

## Test cases to validate our solution

``````import org.junit.Test;
import static org.junit.Assert.assertEquals;
import org.junit.runners.JUnit4;

public class SolutionTest {

@Test
public void testBasic() {
assertEquals("2-7-4", Solution.dashatize(274));
assertEquals("5-3-1-1", Solution.dashatize(5311));
assertEquals("86-3-20", Solution.dashatize(86320));
assertEquals("9-7-4-3-02", Solution.dashatize(974302));
}

@Test
public void testWeird() {
assertEquals("0", Solution.dashatize(0));
assertEquals("1", Solution.dashatize(-1));
assertEquals("28-3-6-9", Solution.dashatize(-28369));
}

@Test
public void testEdgeCases() {
assertEquals("2-1-4-7-48-3-64-7", Solution.dashatize(Integer.MAX_VALUE));
assertEquals("2-1-4-7-48-3-648", Solution.dashatize(Integer.MIN_VALUE));
assertEquals("1-1-1-1-1-1-1-1-1-1", Solution.dashatize(-1111111111));
}
}
``````