[英]Regular expression for integers in java
在我的項目中,我想在一組數據中搜索一個員工ID(整數)。 如果用戶輸入234作為部分數據,那么我想從234獲取所有雇員的身份。目前,我正在將int轉換為String,然后使用String的contains方法。 我想知道是否有更好的方法。
碼
String.valueof(employee.getEmployeeId()).contains(EnterNumber) ;
PS:我發現編寫正則表達式非常困難,對regEx的良好引用會很棒。 提前致謝
正如您所說的,這將起作用:
'^(234).*'
要么
'^'+input+'.*'
如果Id
是一個數字 (例如234789920252
),則可以使用正則表達式
^234\d*$
要么
String pattern = "^" + EnterNumber + "\\d*$";
如果您的任務是找出以“ 234” 開頭的 ID,則最好使用startWith
,不contains
:
String.valueof(employee.getEmployeeId()).startsWith(EnterNumber);
您可以按照以下公式實現數值解決方案:
trunc(n / 10^(trunc(log(n, 10)) - trunc(log(m, 10)))) == m
其中n
是要測試的數字, m
是要匹配的目標數字前綴。 在您的示例中, m = 234
。
trunc(log(n, 10))
是位數n
1 trunc(log(m, 10))
是位數m
1 n
由10^(trunc(log(n, 10)) - trunc(log(m, 10)))
和截斷它,結果是等於m
如果n
開頭m
R中用於概念驗證的實現:
starts <- function(n, m) {
trunc(n / 10^(trunc(log(n, 10)) - trunc(log(m, 10)))) == m
}
> starts(234, 234)
[1] TRUE
> starts(2345, 234)
[1] TRUE
> starts(23, 234)
[1] FALSE
> starts(123, 234)
[1] FALSE
> starts(1, 234)
[1] FALSE
> starts(9898, 234)
[1] FALSE
但這比轉換為String並使用正則表達式進行匹配更好嗎? 那我不知道
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.