Java 如何通过编程从二维码中获取所有数据,如姓名、电子邮件、联系方式?

Java 如何通过编程从二维码中获取所有数据,如姓名、电子邮件、联系方式?,java,android,barcode,barcode-scanner,Java,Android,Barcode,Barcode Scanner,我使用ZXingScannerView扫描条形码,它只显示条形码类型和内容。但我想从诸如姓名、出生日期等内容中提取完整数据 扫描结果如下图所示,它是名片扫描的结果,它给出了混合内容如何提取所有字段 这里只有两种方法 我如何分离所有字段,如姓名、电子邮件、号码等。 String format= rawResult.getBarcodeFormat().toString()); String Content=rawResult.getText()); 您需要先将内容按行分割,然后决定如何处理每

我使用ZXingScannerView扫描条形码,它只显示条形码类型和内容。但我想从诸如姓名、出生日期等内容中提取完整数据

扫描结果如下图所示,它是名片扫描的结果,它给出了混合内容如何提取所有字段

这里只有两种方法

我如何分离所有字段,如姓名、电子邮件、号码等。


String format= rawResult.getBarcodeFormat().toString());
String Content=rawResult.getText());


您需要先将内容按行分割,然后决定如何处理每行内容

String[] lines = content.split("\n");
for (String line : lines){
    String[] typeAndValue = line.split("[:;]", 2);
    String type = typeAndValue[0];
    String value = typeAndValue[1];
    // ...do the voodoo that you do...
}

您可以使用zxing库中包含的ResultParser类

...
import com.google.zxing.Result;
import com.google.zxing.client.result.ParsedResult;
import com.google.zxing.client.result.ResultParser;
...
ParsedResult parsedResult = ResultParser.parseResult(rawResult);
switch (parsedResult.getType()) {
    case ADDRESSBOOK:
        AddressBookParsedResult addressResult = (AddressBookParsedResult) parsedResult;
        String[] addresses = addressResult.getAddresses();
        String[] phoneNumbers = addressResult.getPhoneNumbers();
        String[] emails = addressResult.getEmails();
        ...

但在某些行中只有:不是两者都有:;这是一个正则表达式。括号的意思是“匹配这些字符中的任何一个”。因此,每行将在第一个冒号(:)或第一个分号(;)上拆分。第一行将产生type=“BEGIN”和value=“VCARD”。在这种情况下,您可以将正则表达式简化为“:”。在这一点上,我鼓励您阅读正则表达式,并对代码进行一些实验。数据可能是根据本规范的第三版描述的。通过使用VCARD解析器ANDROID进行搜索,可以找到各种工具和库。例如,,