我目前正在嘗試做一個商業名片掃描儀應用程序。這裏的想法是拍攝一張名片的圖片,它將提取文本並將文本分類到不同的EditText中。使用正則表達式和android分類不同的字段
我已經完成了OCR一部分中提取出所有從名片圖像的文字。
什麼我現在缺少的是使這可以從OCR提取這整個文本分類的姓名,電子郵件地址,電話號碼,在EditText上各自的領域正則表達式的方法。
通過一些谷歌上搜索我已經找到了下面的正則表達式的公式:
private static final String EMAIL_PATTERN =
"[a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{1,256}" +
"\\@" +
"[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}" +
"(" +
"\\." +
"[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25}" +
")+";
private static final String PHONE_PATTERN =
"^[89]\\d{7}$";
private static final String NAME_PATTERN =
"/^[a-z ,.'-]+$/i";
目前我只是能夠提取出使用下面的方法的電子郵件地址:
public String EmailValidator(String email) {
Pattern pattern = Pattern.compile(EMAIL_PATTERN);
Matcher matcher = pattern.matcher(email);
if (matcher.find()) {
return email.substring(matcher.start(), matcher.end());
} else {
// TODO handle condition when input doesn't have an email address
}
return email;
}
我不確定如何編輯^上述方法^使用所有3種正則表達式模式在一次包括並將其展示給喜歡不同的EditText字段(姓名,電子郵件地址,電話麻木ER)。
--------------------------------------------編輯-------------------------------------------------
使用@Styx答案後,
它具有與我由此如何用來傳遞文本「textToUse」給該方法的參數的一個問題,如下所示:
我有也嘗試將文本傳遞給所有三個參數。但由於方法是void
,因此無法完成。或者,如果我將方法更改爲String
而不是void
,則需要返回值。
我只是想自己相似的東西!感謝您的回答。但是,現在存在一個問題,因爲該方法有幾個參數,並且將文本傳遞給方法時出錯。 **請檢查我編輯過的帖子** :) –
@MattDonalds你想達到什麼目的?你打算通過做匹配模式來猜測內容嗎? – kopikaokao
@MattDonalds我可以得到一個識別文本看起來像什麼的例子嗎?每個內容是否由符號分隔,例如空格「」,管道「|」,逗號「,」。 – kopikaokao