参考:Android中的正则表达式语法
项目实践:
1.高亮文本中数字部分
例如要展示:附近有200+个工作机会
如果红色部分的数字是可变的,但是在页面中没有其他用途,那么在与Server端制定接口协议时,这句话就可以当做一个字段返回,红色效果由APP这边来实现。代码如下:
tv_near = (TextView)findViewById(R.id.tv_near);
String respText = "附近有200+个工作机会";
String num = getNumbers(respText);
if(!TextUtils.isEmpty(num)){
int sindex = result.indexOf(num);
if(sindex != -1) {
SpannableString msp = new SpannableString(respText);
msp.setSpan(new ForegroundColorSpan(Color.parseColor("#ff552e")), sindex, sindex + num.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv_near.setText(msp);
} else{
tv_near.setText(respText);
}
} else {
tv_near.setText(respText);
}
其中的关键方法是:
/**
* 解释:(\\d+) : \d表示数字,+表示匹配1个或多个;
* [+]? : []表示一个集合,+表示字符+,?表示0个或1个
* 函数作用:匹配“数字”或者“数字+”两种样式的字符串
* @param content
* @return
*/
public static String getNumbers(String content) {
String regExp = "(\\d+)[+]?";
Pattern pattern = Pattern.compile(regExp);
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
return matcher.group(0);
}
return "";
}
2.用户名必须是完全的中文字符,不能包含其他任何字符
/**
* 检查是否符合2-5个中文字符
* @return 如果符合返回true,否则返回false
*/
public static boolean isValidUserName(String inputStr) {
if (TextUtils.isEmpty(inputStr)) {
return false;
}
boolean flag = false;
Pattern p = Pattern.compile("^[\u4E00-\u9FA5\uF900-\uFA2D]{2,5}$");
Matcher m = p.matcher(inputStr);
if (m.matches()) {
flag = true;
}
return flag;
}
本文介绍如何使用正则表达式在Android应用中高亮显示特定数字,并验证用户名为纯中文字符。通过具体实例展示了正则表达式的用法。
1349

被折叠的 条评论
为什么被折叠?



