studio - Extrae dígitos de la cadena-StringUtils Java
string to string array c# (14)
Creé una clase JUnit Test (como conocimiento / información adicional) para el mismo problema. Espero que encuentres esto útil.
public class StringHelper {
//Separate words from String which has gigits
public String drawDigitsFromString(String strValue){
String str = strValue.trim();
String digits="";
for (int i = 0; i < str.length(); i++) {
char chrs = str.charAt(i);
if (Character.isDigit(chrs))
digits = digits+chrs;
}
return digits;
}
}
Y el caso JUnit Test es:
public class StringHelperTest {
StringHelper helper;
@Before
public void before(){
helper = new StringHelper();
}
@Test
public void testDrawDigitsFromString(){
assertEquals("187111", helper.drawDigitsFromString("TCS187TCS111"));
}
}
Tengo una Cadena y quiero extraer la (única) secuencia de dígitos en la cadena.
Ejemplo: helloThisIsA1234 Muestra. Quiero el 1234
Es un hecho que la secuencia de dígitos ocurrirá solo una vez dentro de la cadena, pero no en la misma posición.
(Para aquellos que pregunten, tengo un nombre de servidor y necesito extraer un número específico dentro de él)
Me gustaría usar la clase StringUtils de las comunidades de Apache.
¡Gracias!
Pruebe este enfoque si tiene símbolos y quiere solo números:
String s = "@##9823l;Azad9927##$)(^738#";
System.out.println(s=s.replaceAll("[^0-9]", ""));
StringTokenizer tok = new StringTokenizer(s,"`~!@#$%^&*()-_+=//.,><?");
String s1 = "";
while(tok.hasMoreTokens()){
s1+= tok.nextToken();
}
System.out.println(s1);
Puede usar str = str.replaceAll("//D+","");
Puede usar la siguiente expresión regular.
string.split(/ /)[0].replace(/[^/d]/g, '''')
Puedes dividir la cadena y compararla con cada personaje
public static String extractNumberFromString(String source) {
StringBuilder result = new StringBuilder(100);
for (char ch : source.toCharArray()) {
if (ch >= ''0'' && ch <= ''9'') {
result.append(ch);
}
}
return result.toString();
}
Código de prueba
@Test
public void test_extractNumberFromString() {
String numberString = NumberUtil.extractNumberFromString("+61 415 987 636");
assertThat(numberString, equalTo("61415987636"));
numberString = NumberUtil.extractNumberFromString("(02)9295-987-636");
assertThat(numberString, equalTo("029295987636"));
numberString = NumberUtil.extractNumberFromString("(02)~!@#$%^&*()+_<>?,.:'';9295-{}[=]987-636");
assertThat(numberString, equalTo("029295987636"));
}
Siempre me gusta usar Guava String utils o similar para este tipo de problemas:
String theDigits = CharMatcher.digit().retainFrom("abc12 3def"); // 123
Solo una linea
int value = Integer.parseInt(string.replaceAll("[^0-9]", ""));
También puedes usar java.util.Scanner
:
new Scanner(str).useDelimiter("[^//d]+").nextInt()
Puede usar next()
lugar de nextInt()
para obtener los dígitos como una cadena.
Puede verificar la presencia del número usando hasNextInt()
en el Scanner
.
Una solución muy simple, si está separada por comas o si no está separada por comas
public static void main(String[] args) {
String input = "a,1,b,2,c,3,d,4";
input = input.replaceAll(",", "");
String alpha ="";
String num = "";
char[] c_arr = input.toCharArray();
for(char c: c_arr) {
if(Character.isDigit(c)) {
alpha = alpha + c;
}
else {
num = num+c;
}
}
System.out.println("Alphabet: "+ alpha);
System.out.println("num: "+ num);
}
Use este número de código. Solo contendrá su resultado deseado.
String str="sdfvsdf68fsdfsf8999fsdf09";
String numberOnly= str.replaceAll("[^0-9]", "");
Use una expresión regular como [^0-9]
para eliminar todos los que no sean dígitos.
A partir de ahí, solo use Integer.parseInt(String);
prueba esto :
String s = "helloThisIsA1234Sample";
s = s.replaceAll("//D+","");
Esto significa: ¡reemplace todas las ocurrencias de caracteres digitales (0 -9) por una cadena vacía!
String line = "This order was32354 placed for QT ! OK?";
String regex = "[^//d]+";
String[] str = line.split(regex);
System.out.println(str[1]);
`String s="as234dfd423";
for(int i=0;i<s.length();i++)
{
char c=s.charAt(i);``
char d=s.charAt(i);
if (''a'' <= c && c <= ''z'')
System.out.println("String:-"+c);
else if (''0'' <= d && d <= ''9'')
System.out.println("number:-"+d);
}
salida:-
number:-4
number:-3
number:-4
String:-d
String:-f
String:-d
number:-2
number:-3