所以首先我想說明一下這是Minecraft插件。所以我有一種方法來產生一些小怪(你不知道它是什麼小怪),並給他們定製名字。名稱基於數字。但我的名字也有一系列的字符。例如,如果這個暴徒的名字是「355 Blaze」,那麼它將返回一個355的整數,並將其餘部分刪除。我應該怎麼做?目前我使用子字符串,但它不起作用,如果數字超過9,它將只返回第一個數字。在字符串中查找第一個數字序列?
0
A
回答
6
如果其通過空間分離,使用基於對第一空間位置的子串:
Integer mobId = new Integer(fullMobName.substring(0, fullMobName.indexOf(" ")));
+1
謝謝你解決了我的問題,效果很好。 –
2
只需使用一個正則表達式。
private final static Pattern p = Pattern.compile("\\d+");
static String firstNum(String s) {
Matcher m = p.matcher(s);
return m.find() ? m.group() : null;
}
1
如果只包含數字後跟字母(與可能的可選空間),這也將工作:
String ss[] = original.split("a-zA-Z ]", 2);
//ss[0] contains the numbers
+0
不,使用無效的正則表達式當然不會工作... – fabian
1
您可以使用正則表達式表達的替代方法
String s = "355 Blaze";
s.replaceAll("[A-Za-z\\s]+", "");
然後你可以投射到int。
1
做沒有一個正則表達式(假設數量爲正,且在int
適合):
int i = 0;
// Skip past non-digits.
while (i < s.length() && !Character.isDigit(s.charAt(i))) {
++i;
}
if (i < s.length()) {
int num = 0;
// Accumulate the digits into the result.
while (i < s.length() && Character.isDigit(s.charAt(i))) {
num = 10 * num + Character.getNumericValue(s.charAt(i));
++i;
}
return num;
}
// No digits found.
throw new NoSuchElementException("No digits found!");
相關問題
- 1. 在字符串中查找字符串的第一個實例
- 2. 查找C++字符串中的第一個printf格式序列
- 3. 查找數組字符串中的第一個字符
- 4. 根據字符串中的第一個字符查找字符串列表中第一次出現的元素
- 5. 查找第一個空元素在一個字符串數組
- 6. 預編譯函數在字符串中查找字符序列?
- 7. 查找字符串中的第一個非重複字符
- 8. 查找字符串中字符的第一個索引
- 9. 在另一個字符串中查找一個字符串的字符串
- 10. 查找字符串中每個單詞的第一個字母
- 11. 在字符串中查找字符串的子序列
- 12. 查找字符串的第一個數字,可能是1,11,111
- 13. 查找分隔字符串中的第n個字符串
- 14. 在字符串中查找第N個字符
- 15. 查找字符串中一個字
- 16. 如何查找字符串中的第一個字母(按字母順序)?
- 17. 查找字符串中的第一個字母和第一個元音java
- 18. 查找字符串中第一個字母的位置
- 19. 查找字符串的第一個字符的位置
- 20. 如何找到在C中第一個字符的字符串++
- 21. 如何查找字符串的倒數第二個字符?
- 22. 在另一個字符串中查找字符串
- 23. LibreOffice的計算器 - 查找第一個數字字符的文本字符串
- 24. 在VB.NET中查找字符串中的第一個非重複字符
- 25. 字符串中的第一個找到的數字與jQuery的子字符串
- 26. 沒有函數查找字符串在c + +工作只與第一個字符?
- 27. 在字符串中查找字符串
- 28. 在字符串中查找字符串
- 29. Objective-C NSRegularExpressions,在字符串中查找數字的第一個出現
- 30. 查找在另一個字符串列表中有一個項目的子字符串的所有字符串
如果它返回的第一個數字而已,您使用的是'substring'了錯誤的參數。 – fabian