문자열에서 숫자 추출-StringUtils Java
문자열이 있고 문자열에서 (유일한) 숫자 시퀀스를 추출하고 싶습니다.
예 : helloThisIsA1234Sample. 나는 1234를 원한다
숫자 시퀀스는 문자열 내에서 한 번만 발생하지만 동일한 위치에서는 발생하지 않습니다.
(물어 주실 분들은 서버 이름이 있고 그 안에 특정 번호를 추출해야합니다)
Apache commomns의 StringUtils 클래스를 사용하고 싶습니다.
감사!
이 코드 번호를 사용하면 원하는 출력 만 포함됩니다.
String str="sdfvsdf68fsdfsf8999fsdf09";
String numberOnly= str.replaceAll("[^0-9]", "");
나는 항상 이러한 종류의 문제에 대해 Guava String utils 또는 이와 유사한 것을 사용하는 것을 좋아 합니다.
String theDigits = CharMatcher.inRange('0', '9').retainFrom("abc12 3def"); // 123
한 줄만 :
int value = Integer.parseInt(string.replaceAll("[^0-9]", ""));
다음을 사용할 수도 있습니다 java.util.Scanner
.
new Scanner(str).useDelimiter("[^\\d]+").nextInt()
next()
대신 사용 nextInt()
하여 숫자를 문자열로 가져올 수 있습니다 .
다음을 사용하여 숫자의 존재를 확인할 수 있습니다 hasNextInt()
온 Scanner
.
같은 정규식을 사용하여 [^0-9]
숫자가 아닌 모든 항목을 제거하십시오.
거기에서 그냥 사용 Integer.parseInt(String);
이 시도 :
String s = "helloThisIsA1234Sample";
s = s.replaceAll("\\D+","");
즉, 모든 디지털 문자 (0-9)를 빈 문자열로 바꿉니다!
동일한 문제에 대해 JUnit 테스트 클래스 (추가 지식 / 정보)를 만들었습니다. 이 정보가 도움이되기를 바랍니다.
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;
}
}
그리고 JUnit 테스트 케이스는 다음과 같습니다.
public class StringHelperTest {
StringHelper helper;
@Before
public void before(){
helper = new StringHelper();
}
@Test
public void testDrawDigitsFromString(){
assertEquals("187111", helper.drawDigitsFromString("TCS187TCS111"));
}
}
다음 정규식을 사용할 수 있습니다.
string.split(/ /)[0].replace(/[^\d]/g, '')
String line = "This order was32354 placed for QT ! OK?";
String regex = "[^\\d]+";
String[] str = line.split(regex);
System.out.println(str[1]);
당신이 사용할 수있는 str = str.replaceAll("\\D+","");
문자열을 분할하고 각 문자와 비교할 수 있습니다.
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();
}
코드 테스트
@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"));
}
기호가 있고 숫자 만 원하는 경우이 방법을 시도하십시오.
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);
쉼표로 구분하거나 쉼표로 구분하지 않는 경우 매우 간단한 솔루션
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);
}
`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);
}
산출:-
number:-4
number:-3
number:-4
String:-d
String:-f
String:-d
number:-2
number:-3
참조 URL : https://stackoverflow.com/questions/14974033/extract-digits-from-string-stringutils-java
'Programing' 카테고리의 다른 글
numpy의 배열에서 연속 요소 그룹을 찾는 방법은 무엇입니까? (0) | 2020.12.28 |
---|---|
Javascript : * string * 숫자의 소수 자릿수를 검색하는 방법은 무엇입니까? (0) | 2020.12.28 |
Mongodb : 127.0.0.1:27017에 연결하지 못했습니다. 이유 : errno : 10061 (0) | 2020.12.28 |
자바 수학에서 조합 'N choose R'? (0) | 2020.12.28 |
Android에서 그라디언트가있는 텍스트 (0) | 2020.12.28 |