首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么newLISP将字符串文本限制在2048个字符?

为什么newLISP将字符串文本限制在2048个字符?
EN

Stack Overflow用户
提问于 2013-11-30 10:59:57
回答 1查看 245关注 0票数 1

我试图为我编写的这个newLISP程序编写使用说明,但它一直抱怨字符串太长。

代码语言:javascript
复制
ERR: string token too long : "$$$$$$$$&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"

我花了大约10分钟咒骂newLISP,想出一些偏执的理论,比如,也许你不应该在字符串中引用,或者当我使用原始字符串({})时,它可能会起作用,直到我开始切断字符串。它达到了消息消失的地步,使帮助消息变得毫无帮助。原来,newLISP不喜欢比2048(2^11)字符更多的字符串。苏,

为什么要限制字符串文字中的字符数?

为什么是2048个字符?

将单元格内存增加到128MB(将其视为手册)不会改变任何事情。现在唯一可行的解决方案是将帮助字符串拆分为两个字符串,每个字符串位于2048字符下,然后将它们与string连接起来。

另一件奇怪的事情是,任何具有2048+字符的字符串都会在repl中以不同的方式打印:

代码语言:javascript
复制
> (dup "&" 2048)
    [text]&&&&&&&&&&&&&& .....
           ......
                &&&&&&&&&&&&&&&[/text]


> (dup "&" 2040)
    "&&&&&&&&&&&&&&&&&&& .....
        .....
                &&&&&&&&&&&&&&&"
EN

回答 1

Stack Overflow用户

发布于 2013-11-30 17:09:38

有三种方法可以执行字符串:

  • 在引号中-转义字符被处理-限制在2048个字符
  • 在大括号中-不处理转义字符-限制为2048个字符。
  • 在标签中-不处理转义符-长度无限。

从手册中:

引号字符串不能超过2,048个字符。较长的字符串应该使用文本和/text标记分隔符。newLISP自动使用这些标记输出超过2,048个字符的字符串。

字符串可以很长:

代码语言:javascript
复制
> (quiet (set 's (dup "&" 10E8))) ; don't bother to show the string :)
> (length s)
1000000000
> (10000 20 s)
"&&&&&&&&&&&&&&&&&&&&"
>

您将遇到的唯一问题是,在希望字符串真正结束之前,您需要处理可能包含[/text]标记的字符串中的源代码。看起来你还没到那个地步..。:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20299397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档