gpt4 book ai didi

javascript - 从长字符串中过滤数据(vcard)

转载 作者:行者123 更新时间:2023-11-30 16:42:06 25 4
gpt4 key购买 nike

我正在扫描电子名片二维码中的数据。我收到的字符串总是看起来像这样:

BEGIN:VCARD
VERSION:2.1
N:Lastname;Firstname
FN:Firstname Lastname
ORG:Lol Group
TITLE:Project Engineer
TEL;WORK:+32 (0)11 12 13 14
ADR;WORK:Industrielaan 1;2250 Olen;Belgium
EMAIL:link.com
URL:http://www.link.com
END:VCARD

我需要一些数据来自动填写表单(我在 jQuery 中这样做)。我需要名字姓氏组织电话号码

所以我需要NORGTEL之后的数据。但我真的坚持如何以最好的方式做到这一点。有这方面的经验吗?也许可以给我一些提示?

更新:

数据有时会发生变化。这些是可能性:

选项 1

BEGIN:VCARD
VERSION:3.0
N:lname;fname;;;
FN:fname lname
TITLE:Project manager
EMAIL;type=INTERNET;type=WORK:s.demesqdqs.be
TEL;type=WORK:+3812788105
END:VCARD

选项 2

BEGIN:VCARDFN:Barend VercauterenTEL:+32(0)9 329 93 06EMAIL:Barend.Vercauterenëesc.beURL:http://www.esc.beN:Vercauteren;BarendADR:Grote Steenweg 39;9840;De PinteORG:ESC bvbaROLE:sales consultantVERSION:3.0END:VCARD

选项 3

BEGIN:VCARDVERSION:2.1N:Deblieck;Tommy;;DhrFN:Tommy DeblieckTITLE:ZaakvoerderORG:QBMT bvbaADR:;;Kleine Pathoekweg 44;Brugge;West-Vlaanderen;8000;Belgi≠A0171TEL;WORK;PREF:+32 479302972TEL;CELL:+32 479302972EMAIL:tdëqbmt.beURL:www.qbis.beEND:VCARD

如您所见,所有文本都可能相互连接......

我使用选项 1 接收正确数据的代码:

var fname = /FN:(.*)/g;
var org = /ORG:(.*)/g;
var tel = /TEL;[^:]*:(.*)/g;

var fullname, firstname, morg, mtel;

fullname = fname.exec(qr_data);
fullname = fullname[1];
var array = fullname.split(' ');
firstname = array[0];
array.shift();

var lastname = '';

if(array.length > 1){
$.each(array, function(index, item) {
lastname += item ;
});
}
else
{
lastname = array[0];
}

morg = org.exec(qr_data);
mtel = tel.exec(qr_data);

if(firstname)
{
$("#firstname").val(firstname);
}

if(lastname)
{
$("#name").val(lastname);
}

if(morg)
{
$("#company").val(morg[1]);
}

if(mtel)
{
$("#number").val(mtel[1]);
}

但是我如何使用其他 2 个选项获取这些数据?

最佳答案

使用regex 提取数据。

对于 name = /FN:(.*)/g
对于组织 = /ORG:(.*)/g
对于电话 = /TEL;[^:]*(.*)/g

看看这个 fiddle .

var fname = /FN:(.*)/g;
var org = /ORG:(.*)/g;
var tel = /TEL;[^:]*:(.*)/g;
var str = 'BEGIN:VCARD\nVERSION:2.1\nN:Lastname;Firstname\nFN:Firstname Lastname\nORG:Lol Group\nTITLE:Project Engineer\nTEL;WORK:+32 (0)11 12 13 14\nADR;WORK:Industrielaan 1;2250 Olen;Belgium\nEMAIL:link.com\nURL:http://www.link.com\nEND:VCARD';
var mname, morg, mtel;

mname = fname.exec(str);
morg = org.exec(str);
mtel = tel.exec(str);

alert(mname[1]);
alert(morg[1]);
alert(mtel[1]);

关于javascript - 从长字符串中过滤数据(vcard),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31802227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com