簡體   English   中英

如何檢查字符串是否包含特定范圍內的數字,例如在Java中從11到26

[英]How to check if the string contains numbers from a specific range, for eg from 11 to 26 in java

如何檢查字符串是否包含特定范圍內的數字,例如在Java中為11到26:例如:

public void checkStringForNumbers(){
    String str = "Green (Low): 20"
    if(String.valueOf(str).contains(numbers between 11 to 26)==true){
        System.out.println("I got 11 to 26 string");
    } else {
        System.out.println("I got a different value range");
    }
}

如果您的字符串只有一個數字,則可以使用正則表達式進行查找,解析並檢查其是否在范圍內:

String s = "Green (Low): 20";
Matcher m = Pattern.compile("[-+]?\\d+").matcher(s);
if (m.find())
    int number = Integer.parseInt(m.group());
    if (number <= 26 && number >= 11) {
        System.out.println("Contains number between 11 and 26!");
    } else {
        System.out.println("Contains number but not between 11 and 26!");
    }
} else {
    System.out.println("Contains no numbers");
}

如果字符串中有多個數字,並且要檢查其中是否有一個數字在范圍內,請使用循環:

String s = "Green (Low): 20";
Matcher m = Pattern.compile("[-+]?\\d+").matcher(s);
while (m.find()) {
    int number = Integer.parseInt(m.group());
    if (number <= 26 && number >= 11) {
        System.out.println("Contains number between 11 and 26!");
        break;
    }
}

您的方法可能應該返回一個布爾值,而不是將結果打印出來:

static boolean hasNumberInRange(String s) {
    Matcher m = Pattern.compile("[-+]?\\d+").matcher(s);
    while (m.find()) {
        int number = Integer.parseInt(m.group());
        if (number <= 26 && number >= 11) {
            return true;
        }
    }
    return false;
}

正如Anton Balaniuc所建議的,您可以在Java 9中執行此操作:

return Pattern.compile("[-+]?\\d+").matcher(s).results()
       .map(MatchResult::group)
       .map(Integer::parseInt)
       .anyMatch(n -> n >= 11 && n <= 26);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM