문자열에서 숫자 추출 - StringUtils Java
String을 가지고 있으며 문자열 내의 (단일) 자리수 시퀀스를 추출하고 싶습니다.
예: helloThisIsA1234Sample.1234를 원합니다.
숫자 시퀀스는 문자열 내에서 한 번만 발생하지만 같은 위치에서는 발생하지 않습니다.
(물어보시는 분은 서버명을 가지고 있으며 서버명에 특정 번호를 추출할 필요가 있습니다.)
Apache Commomns의 String Utils 클래스를 사용하고 싶습니다.
감사합니다!
이 코드 번호 사용원하는 출력만 포함됩니다.
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()
숫자를 a로 받다String
콜링에 주의해 주세요.Integer.parseInt
결과적으로는 전화하는 것보다 몇 배나 빠를 수 있다nextInt()
.
다음을 사용하여 번호의 존재를 확인할 수 있습니다.hasNextInt()
에서Scanner
.
다음과 같은 정규식을 사용합니다.[^0-9]
모든 비균형을 제거합니다.
거기서부터 그냥 사용하세요.Integer.parseInt(String);
다음을 수행합니다.
String s = "helloThisIsA1234Sample";
s = s.replaceAll("\\D+","");
즉, 디지털 문자(0~9)는 모두 빈 문자열로 바꿉니다.
구아바스CharMatcher
클래스 발췌Integer
에서 s.String
.
String text="Hello1010";
System.out.println(CharMatcher.digit().retainFrom(text));
수율:
1010
같은 문제에 대한 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 str="2.53GHz";
String decimal_values= str.replaceAll("[^0-9\\.]", "");
System.out.println(decimal_values);
org.apache.commons.lang3에 액세스할 수 있는 경우.StringUtils.getDigits 메서드를 사용할 수 있습니다.
public static void main(String[] args) {
String value = "helloThisIsA1234Sample";
System.out.println(StringUtils.getDigits(value));
}
output: 12345
`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
다음과 같이 시험해 보십시오.
String str="java123java456";
String out="";
for(int i=0;i<str.length();i++)
{
int a=str.codePointAt(i);
if(a>=49&&a<=57)
{
out=out+str.charAt(i);
}
}
System.out.println(out);
문자열의 숫자를 구분하기 위한 간단한 python 코드
s="rollnumber99mixedin447"
list(filter(lambda c: c >= '0' and c <= '9', [x for x in s]))
언급URL : https://stackoverflow.com/questions/14974033/extract-digits-from-string-stringutils-java
'source' 카테고리의 다른 글
Vue.js의 'data:'와 'data()'의 차이점은 무엇입니까? (0) | 2022.09.22 |
---|---|
그라들 태스크 - Java 응용 프로그램에 인수를 전달합니다. (0) | 2022.09.22 |
PHP: 정의되지 않은 어레이 키를 처리하는 가장 빠른 방법 (0) | 2022.09.22 |
Mac용 최고의 PHP IDE? (무료인 것이 좋습니다!) (0) | 2022.09.22 |
SQL 오류 구문. 올바른 구문은 MariaDB 서버 버전에 해당하는 설명서를 확인하십시오. (0) | 2022.09.22 |