Using Regular Expressions.
a. str.replaceAll("[^\\d.]", "").replace(".", "")
b. str.replaceAll("[^0-9.]", "").replace(".", "")
c. str.replaceAll("\\D+", "")
\d: Matches a digit: [0-9]
\\D: Matches a non-digit: [^0-9]
You can even traverse every character of string and take only digits from string.
StringUtil.java
package com.smaple.app.utils;
public class StringUtil {
public static String removeNonNumericChars_approach1(String str) {
if (str == null || str.isEmpty()) {
return str;
}
return str.replaceAll("[^\\d.]", "").replace(".", "");
}
public static String removeNonNumericChars_approach2(String str) {
if (str == null || str.isEmpty()) {
return str;
}
return str.replaceAll("[^0-9.]", "").replace(".", "");
}
public static String removeNonNumericChars_approach3(String str) {
if (str == null || str.isEmpty()) {
return str;
}
return str = str.replaceAll("\\D+", "");
}
public static String removeNonNumericChars_approach4(String str) {
if (str == null || str.isEmpty()) {
return str;
}
StringBuilder builder = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char currentChar = str.charAt(i);
if (Character.isDigit(currentChar)) {
builder.append(currentChar);
}
}
return builder.toString();
}
}
StringUtilTest.java
package com.sample.app.utils;
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
import com.smaple.app.utils.StringUtil;
public class StringUtilTest {
@Test
public void emptyString() {
String str = "";
assertEquals(StringUtil.removeNonNumericChars_approach1(str), "");
assertEquals(StringUtil.removeNonNumericChars_approach2(str), "");
assertEquals(StringUtil.removeNonNumericChars_approach3(str), "");
assertEquals(StringUtil.removeNonNumericChars_approach4(str), "");
}
@Test
public void nullString() {
String str = null;
assertEquals(StringUtil.removeNonNumericChars_approach1(str), null);
assertEquals(StringUtil.removeNonNumericChars_approach2(str), null);
assertEquals(StringUtil.removeNonNumericChars_approach3(str), null);
assertEquals(StringUtil.removeNonNumericChars_approach4(str), null);
}
@Test
public void randomString() {
List<String> input = Arrays.asList("a123.3334xyz.178x", "12#$%&^9", ";~`{}][]123");
List<String> result = Arrays.asList("1233334178", "129", "123");
for (int i = 0; i < input.size(); i++) {
assertEquals(StringUtil.removeNonNumericChars_approach1(input.get(i)), result.get(i));
assertEquals(StringUtil.removeNonNumericChars_approach2(input.get(i)), result.get(i));
assertEquals(StringUtil.removeNonNumericChars_approach3(input.get(i)), result.get(i));
assertEquals(StringUtil.removeNonNumericChars_approach4(input.get(i)), result.get(i));
}
}
}
You may
like
No comments:
Post a Comment