私は文字列を持っていて、文字列内の数字の (唯一の) シーケンスを抽出したいと考えています。
例: helloThisIsA1234Sample。1234が欲しい
一連の数字は、文字列内で 1 回だけ発生しますが、同じ位置には発生しません。
(尋ねる人のために、私はサーバー名を持っており、その中の特定の番号を抽出する必要があります)
Apache commomns の StringUtils クラスを使用したいと思います。
ありがとう!
私は文字列を持っていて、文字列内の数字の (唯一の) シーケンスを抽出したいと考えています。
例: helloThisIsA1234Sample。1234が欲しい
一連の数字は、文字列内で 1 回だけ発生しますが、同じ位置には発生しません。
(尋ねる人のために、私はサーバー名を持っており、その中の特定の番号を抽出する必要があります)
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
1行だけ:
int value = Integer.parseInt(string.replaceAll("[^0-9]", ""));
次のものも使用できますjava.util.Scanner
。
new Scanner(str).useDelimiter("[^\\d]+").nextInt()
next()
の代わりにを使用nextInt()
して、数字を として取得できますString
。Integer.parseInt
結果を呼び出すと、を呼び出すよりも何倍も高速になる可能性があることに注意してくださいnextInt()
。
hasNextInt()
を使用して番号の存在を確認できますScanner
。
などの正規表現を使用して、[^0-9]
数字以外をすべて削除します。
そこから、使用するだけですInteger.parseInt(String);
これを試して :
String s = "helloThisIsA1234Sample";
s = s.replaceAll("\\D+","");
これは、出現するすべてのデジタル文字 (0 ~ 9) を空の文字列に置き換えることを意味します。
同じ問題について、JUnit Test クラスを (追加の知識/情報として) 作成しました。これがお役に立てば幸いです。
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 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+","");
次の正規表現を使用できます。
string.split(/ /)[0].replace(/[^\d]/g, '')
シンボルがあり、数字だけが必要な場合は、このアプローチを試してください。
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);
これを試すことができます:
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);