[英]Java string tokenizer checking numbers
在這里是Java的初學者,我正在嘗試將中綴表達式轉換為后綴表達式,但是在理解如何檢查StringTokenizer
創建的令牌是否為數字方面遇到困難。 我嘗試了tokens.equals()
方法,但意識到它並不有效,因為數字並不總是1位數字。
public String infixToPostfix() {
Stack<String> s = new Stack<>();
String expression = jtfInfix.getText();
String delims = "+-*/() ";
StringTokenizer strToken = new StringTokenizer(expression, delims, true);
String postFix = "";
while (strToken.hasMoreTokens()) {
String token = strToken.nextToken();
// if the next token is a number, append it to the result
if (token!=delims) {
postFix += token;
}
}
}
因為有很多情況,所以檢查String
是否為數字可能很棘手。 除非您打算接受簡單的值,例如正整數(任何數字長度),否則我不建議自己編寫代碼。 要執行此簡單檢查,可以使用正則表達式:
token.matches("\\d+");
它將匹配一個或多個數字(數字)。
有關更復雜的匹配(例如十進制值和負數),請參見如何在Java中檢查字符串是否為數字 。
用法示例:
"1".matches("\\d+"); // true
"1057".matches("\\d+"); // true
"".matches("\\d+"); // false
"1.0".matches("\\d+"); // false
"-1".matches("\\d+"); // false
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.