gpt4 book ai didi

java - 从字符串中获取标记之间的字符串

转载 作者:行者123 更新时间:2023-11-29 03:21:53 24 4
gpt4 key购买 nike

我对正则表达式不是很熟悉,所以我在这里问。

我有这样一个字符串:

BEGIN:VCARD
VERSION:3.0
FN:A Sirius Swimwear Collection
N:Collection;A;Sirius Swimwear;;
TEL;TYPE=HOME:22448
TEL;TYPE=CELL:52316
ADR:;Taylors Road;;;;;
ORG:Norfolk Phone Book
END:VCARD
BEGIN:VCARD
VERSION:3.0
FN:A Walk in the Wild
N:Wild;A;Walk in the;;
TEL;TYPE=HOME:22502
item1.TEL:23205
item1.X-ABLabel:Facsimile
ADR:;Grassy Road;;;;;
ORG:Norfolk Phone Book
END:VCARD
BEGIN:VCARD
VERSION:3.0
FN:AATA Orn Tours
N:Tours;AATA;Orn;;
TEL;TYPE=HOME:23611
TEL;TYPE=CELL:50755
ADR:;Bookings;;;;;
ORG:Norfolk Phone Book
END:VCARD
BEGIN:VCARD
VERSION:3.0
FN:Aatuti Art
N:Art;Aatuti;;;
TEL;TYPE=HOME:23669
ADR:;The Village;;;;;
ORG:Norfolk Phone Book
END:VCARD
BEGIN:VCARD
VERSION:3.0
FN:ABC Hobby Centre
N:Centre;ABC;Hobby;;
TEL;TYPE=HOME:22139
ADR:;Taylors Road;;;;;
ORG:Norfolk Phone Book
END:VCARD
(...)

对于那些熟悉的人来说,这是一堆 VCard,我想从 String 中一张一张地得到一张 VCard。所以,我想把它分成多个字符串。我想用 BEGIN:VCARDEND:VCARD 标签拆分

结束:

vcard1 = "BEGIN:VCARD
VERSION:3.0
FN:A Sirius Swimwear Collection
N:Collection;A;Sirius Swimwear;;
TEL;TYPE=HOME:22448
TEL;TYPE=CELL:52316
ADR:;Taylors Road;;;;;
ORG:Norfolk Phone Book
END:VCARD";

vcard2 = "BEGIN:VCARD
VERSION:3.0
FN:A Walk in the Wild
N:Wild;A;Walk in the;;
TEL;TYPE=HOME:22502
item1.TEL:23205
item1.X-ABLabel:Facsimile
ADR:;Grassy Road;;;;;
ORG:Norfolk Phone Book
END:VCARD";

vcard3 = "BEGIN:VCARD
VERSION:3.0
FN:AATA Orn Tours
N:Tours;AATA;Orn;;
TEL;TYPE=HOME:23611
TEL;TYPE=CELL:50755
ADR:;Bookings;;;;;
ORG:Norfolk Phone Book
END:VCARD";

老实说,我只需要正确的正则表达式模式作为我能够完成的循环。这是在 JAVA 中(适用于 Android)。

编辑

这是我到目前为止没有成功的尝试:

if(vcard.contains("VERSION:"))
{
Log.d(TAG, "Creating the patterns");
Pattern p = Pattern.compile("BEGIN:VCARD(.*)END:VCARD");

Matcher m = p.matcher(vcard);

if (m.find())
{

Log.d(TAG, "Find: " + m.group(1));

}
Log.d(TAG, "Not found anything");

最佳答案

您可以将 Pattern.DOTALL 与您的正则表达式一起使用。这意味着 在 dotall 模式下,表达式点 (.) 匹配任何字符,包括行终止符,它将帮助您从多行匹配模式。

String input = "__YOUR__VCARDS__";
Pattern pattern = Pattern.compile("(BEGIN:VCARD.*?END:VCARD)", Pattern.DOTALL);
Matcher m = pattern.matcher(input);
while (m.find()) {
System.out.println(m.group(1));
}

关于java - 从字符串中获取标记之间的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23114875/

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