在正则表达式!match上强制关闭 [英] Force Close on Regular Expression !match
本文介绍了在正则表达式!match上强制关闭的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
下面的代码有问题.我正在尝试匹配一个字符串.当我进行比赛时,一切都很好.如果找不到匹配项,则会引发异常并强制关闭.
I am having a problem with the following bit of code. I am trying to match a string. When I have a match everything works perfectly. When it does not find a match it throws an exception and causes a force close.
代码段
private void validatePhoneNumberFormat(String t){
Pattern p = Pattern.compile("^Match this exactly!$");
Matcher m = p.matcher(t);
m.find();
if (m.group(0) != ""){
this.myString = m.group(0);
this.setIsValid(true);
this.setStatus(0);
} else {
this.myString = "Invalid Input String";
this.setIsValid(false);
this.setStatus(99); // String parsing error
}
}
LogCat
LogCat
02-17 14:12:10.562: WARN/dalvikvm(3854): threadid=1: thread exiting with uncaught exception (group=0x40015560)
02-17 14:12:11.322: ERROR/AndroidRuntime(3854): FATAL EXCEPTION: main
02-17 14:12:11.322: ERROR/AndroidRuntime(3854): java.lang.IllegalStateException: No successful match so far
02-17 14:12:11.322: ERROR/AndroidRuntime(3854): at java.util.regex.Matcher.ensureMatch(Matcher.java:607)
02-17 14:12:11.322: ERROR/AndroidRuntime(3854): at java.util.regex.Matcher.group(Matcher.java:358)
02-17 14:12:11.322: ERROR/AndroidRuntime(3854): at com.android.example.RegExTest.MyList.validateMyStringFormat(MyList.java:47)
02-17 14:12:11.322: ERROR/AndroidRuntime(3854): at com.android.example.RegExTest.MyList.<init>(MyList.java:15)
02-17 14:12:11.322: ERROR/AndroidRuntime(3854): at com.android.example.RegExTest.DataManagerActivity.readInputFile(DataManagerActivity.java:128)
02-17 14:12:11.322: ERROR/AndroidRuntime(3854): at com.android.example.RegExTest.DataManagerActivity$2.onClick(DataManagerActivity.java:77)
02-17 14:12:11.322: ERROR/AndroidRuntime(3854): at android.view.View.performClick(View.java:2485)
02-17 14:12:11.322: ERROR/AndroidRuntime(3854): at android.view.View$PerformClick.run(View.java:9080)
02-17 14:12:11.322: ERROR/AndroidRuntime(3854): at android.os.Handler.handleCallback(Handler.java:587)
02-17 14:12:11.322: ERROR/AndroidRuntime(3854): at android.os.Handler.dispatchMessage(Handler.java:92)
02-17 14:12:11.322: ERROR/AndroidRuntime(3854): at android.os.Looper.loop(Looper.java:123)
02-17 14:12:11.322: ERROR/AndroidRuntime(3854): at android.app.ActivityThread.main(ActivityThread.java:3647)
02-17 14:12:11.322: ERROR/AndroidRuntime(3854): at java.lang.reflect.Method.invokeNative(Native Method)
02-17 14:12:11.322: ERROR/AndroidRuntime(3854): at java.lang.reflect.Method.invoke(Method.java:507)
02-17 14:12:11.322: ERROR/AndroidRuntime(3854): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-17 14:12:11.322: ERROR/AndroidRuntime(3854): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-17 14:12:11.322: ERROR/AndroidRuntime(3854): at dalvik.system.NativeStart.main(Native Method)
02-17 14:12:11.402: WARN/ActivityManager(62): Force finishing activity com.android.example.RegExTest/.DataManagerActivity
推荐答案
尝试尝试查找匹配项:
if (m.matches()){
代替:
if (m.group(0) != ""){
这篇关于在正则表达式!match上强制关闭的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文