gpt4 book ai didi

java - 你会如何用 Java 解析这个 TLV?

转载 作者:行者123 更新时间:2023-12-01 15:48:28 25 4
gpt4 key购买 nike

我有一个为 iPhone (Objective-C) 编写的移动应用程序,允许用户使用特定格式导入数据。我用 Java 为 Android 编写了相同的应用程序,并且用户开始要求导入的能力。数据的格式是一种可移植的标准,编写此类应用程序的人必须能够导入和导出。

虽然我确实用 Objective-C 写了我要问的内容,但我有一种感觉,如果我用不同的方式来做,我可以让我的生活变得更轻松一些。所以我想问一下你在Java中如何解析下面的TLV。我不需要代码,只需要要点。

这是 TLV 格式:

<Type:Length>Value<Type:Length>Value<Type:Length>Value<end>

每条记录均以 < 开头并以 <end> 结尾。记录中的\n 是可以接受的,零长度值也可以。

这是描述四种不同汽车的示例输入,请注意多行记录和零长度值。

<make:4>ford<model:7>contour<color:3>red<end>
<make:5>mazda<model:3>mpv<color:5>black<end>
<make:3>bmw
<model:3>335
<color:6>yellow
<end>
<make:7>unknown<model:0><color:4>grey<end>

解析数据后,我会将其插入到 SQLite 数据库中,因此最终按每条记录循环数据将产生一堆字符串,我可以将它们用作 INSERT 语句的一部分。

感谢您提供的任何想法!

尼克

最佳答案

非常奇怪的格式。有发布的规范吗?

您可以尝试进行字符串标记化路线。您可以利用内置的 Java 正则表达式来帮助匹配,甚至只使用基本的 String类方法(分割和修剪是你的 friend )。基本上只是这样做:

String[] lines = input.split("<end>");
for(String line : lines)
{
line = line.trim();
String[] sublines = line.split("<");
for(String subline : sublines)
{
subline = subline.trim();
...additional breaking, trimming, branching...
}
}

类型长度是一个有趣的验证组件,但对于现代语言来说有点奇怪。我要问的一个大问题是期望什么编码。 UTF-8? 7 位 ASCII?奇怪的东西?

我的 friend 会把上面的伪代码称为 hack,并告诉我做类似 JavaCC 的事情。 ,但我有一些 Nerd 和不切实际的 friend 。 ;)

关于java - 你会如何用 Java 解析这个 TLV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6632891/

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