我有EditText,可以在其中写入街道名称和街道编号。但是通过应用程序设计,我必须将这些参数写入单个editText。
所以我创建了正则表达式,它将从我的EditText获取街道名称和街道编号。我正在将StreetName和StreetNumber作为不同的参数发送到服务器上的HTTPRequest。
val matcher = Pattern.compile("^([\\p{L} ]+)([0-9\\/]+)([\\p{L}0-9]+)").matcher(streetName)
var streetNameOnly = ""
var streetNumOnly = ""
if (matcher.find()) {
streetNameOnly = matcher.group(1).trim()
streetNumOnly = matcher.group(2).trim() + matcher.group(3).trim()
}
第一组应与仅字母和空格("North Street"
)匹配。
第二组应与街道编号和斜杠("25"
或"120/"
)匹配
第三组应匹配第二个数字或字母(在反斜杠之后)->("12584"
或"145C"
)>
因此最终的街道名称可以是"North Street 120/12584"
-> "North Street"
-第一个参数和"120/12584"
第二个参数。
这可以按预期工作,但是如果用户仅键入"North Street"
或"North"
,则组1中的匹配者将找到空字符串。