2015-07-13 82 views
2

当执行“TextMeshGenerator的字符串太长,切断字符。”做Regex.Replace当 - 统一C#

newstring = Regex.Replace(oldString, oldSubString, newSubString); 

我收到以下错误:

字符串太长TextMeshGenerator。切断字符。
数< =的std :: numeric_limits ::最大()

我的字符串大小约为15000个字,我使用团结5.1.1f1(64位)

我已经环顾四周寻求解决方案,但找不到任何东西,任何想法或解决方法?

谢谢!

+0

你不可能在Regex.Replace上得到这个错误。您提供的代码必须是不完整的。 –

+0

我认为它是Unity3D中的一个bug。将Unity3D更新为最新版本,如果此问题仍然存在,可以通知他们有关该问题。他们可能会将C#代码翻译成C++,因此会出现这个奇怪的错误消息。 – Dzienny

+0

这[看起来已经解决](https://bitbucket.org/Unity-Technologies/unitytesttools/issues/37/string-too-long-for-textmeshgenerator)。也许它没有妥善的解决... –

回答

1

我想这是一个团结的bug。但不确定。

See Here的说明。我已经提出了相同的问题Here,我想它没有任何关系正则表达式/

+0

事实上并不是这个问题 - 据我了解,这是一个与ui文本组件渲染到画布相关的问题,它不喜欢输出太长的字符串。 – f4bo

1

一个可能的解决方法可能是将您的原始字符串拆分为两个或多个字符串,应用正则表达式操作,最后加入部分字符串。但可能的错误将保持与7.5k字符或类似。

现在,你为什么要超过15K字符的字符串使用正则表达式操作? 也许如果你描述你的要求,社区可以给你其他方式的想法做同样的工作!

+0

我需要它来改变特定的单词格式的大文本内(如粗体,斜体,等...)这样的:newstring = Regex.Replace(oldString,thisWordBold, thisWordBold ),GUI.Label(newstring) 。分割弦似乎是目前唯一的选择... – Santi

+0

所以,你可以分割大字符串而不会破坏单词,我的意思是,寻找空间来分割它,现在,这个版本的马车正则表达式可以处理多少个字符,我不知道。 – mayo

+0

所以我没有从正则表达式中得到错误,当我尝试在替换后运行GUILayout.Label(newString)时我实际得到它。 Regex.Replace导致字符串从大约10k到15k字符,我猜这对GuiLayout.label来说太多了,尽管错误消息并没有指向代码中的任何特定行,并且它们每次显示3次。无论如何,我只会分割字符串并呈现几个标签,谢谢 – Santi