【问题标题】:Is there a way to compress a long string to a smaller one and vise versa by code?有没有办法通过代码将长字符串压缩为较小的字符串,反之亦然?
【发布时间】:2018-11-14 23:53:24
【问题描述】:

我正在为现有的基于 Web 的 JavaScript 工具开发插件。 我们正在收集数据并将其存储在如下字符串中: "2.545,3.552,8.568;2.553,9.898,6.542;..." 等等。

问题是,我们达到 64k 字符的导出限制太快了。 我想问 - 如果这是一个愚蠢的问题,请原谅 - 如果有人知道 我们可以在导出字符串之前使用它来压缩字符串的算法或方法。我确信这在技术上是可行的,但它肯定超出了我作为程序员的技能。

感谢任何提示、链接或建议。

【问题讨论】:

  • 恕我直言,“压缩算法”的 Google 搜索结果对您没有帮助有什么原因吗?
  • How to compress a string?的可能重复
  • 我可能应该提到我是一个业余程序员,一般不熟悉网络编程。正如我所说,对不起,如果这是一个愚蠢的问题。 @MarkusSafar 感谢您的链接。当我用谷歌搜索这个问题时,我实际上发现了这一点,但我不确定它是否真的是同一个问题。 OP 问了一些关于“SVG 路径字符串”的问题,我不熟悉这个术语。也许我应该在更适合新手的地方问这个问题?我真的不明白我将如何实施这样的解决方案。
  • @HenryChinaski, SVG path String 只是意味着 OP 有一个 string 包含来自 path data i>SVG 格式。然而,问题似乎与您的目标相同,即压缩存储在 string 中的数据。因此,您需要某种压缩算法,并且链接的问题包含一堆指向它们的答案。所以我希望这对你有帮助;-)
  • @AbanaClara 感谢网络工作者的提示!

标签: javascript string encryption compression


【解决方案1】:

lz-string 看起来会起作用。

var string = "2.545,3.552,8.568;2.553,9.898,6.542";
alert("Size of sample is: " + string.length);
var compressed = LZString.compress(string);
alert("Size of compressed sample is: " + compressed.length);
string = LZString.decompress(compressed);
alert("Sample is: " + string);
<script src="https://cdn.jsdelivr.net/gh/pieroxy/lz-string/libs/lz-string.js"></script>

【讨论】:

  • 非常感谢@Will。真的帮我解决了你的sn-p!我习惯了 C# 代码在独立的应用程序中,我很难理解 Web 开发中的琐碎事情。
  • @HenryChinaski 我忘了问。如果您无法修改服务器代码。一旦他们收到这个字符串,你将如何解压缩它?您的客户将处理一个未按照他们期望的方式格式化的字符串
  • @AbanaClara 他们将文本文件发送给我们,我们对其进行解压缩并将结果发送给他们。
  • @HenryChinaski 啊太棒了。那你不应该有问题。祝你好运
  • @AbanaClara 完美!谢谢!
【解决方案2】:

我建议您为此使用专用的Web Worker。在 mozilla 开发者页面上Using Web Worker 有一个很好的解释。

【讨论】:

  • 非常感谢您的帮助!
  • @HenryChinaski,不客气。如果您需要任何进一步的帮助,请告诉我 ;-)
  • @HenryChinaski 请注意,网络工作者将无法访问 DOM、窗口或任何库。您需要将压缩库的源代码复制粘贴到 web worker 脚本中,或者您可以在概念上发送函数字符串并在 worker 内部进行评估。 Web Worker 只接受和发送字符串。我不确定多线程在 C# 或 Java 中是如何工作的,但这就是它目前在 JS 中的工作方式
  • @AbanaClara 感谢您的提示。我会记住这一点,然后尝试一两天。实际上,JS 是我的小问题。我的问题都是你在使用数据库、服务器、html实现等时需要注意的那些看似微不足道的事情。我相信对于有经验的 Web 开发人员来说,其中大部分都是微不足道的东西,但在独立的应用程序中,只有你和代码。您可以在安全空间内轻松测试所有内容。
  • @AbanaClara 工作完美!谢谢!
猜你喜欢
  • 2011-02-24
  • 2019-05-24
  • 1970-01-01
  • 2012-06-13
  • 2011-05-27
  • 2012-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多