actionscript - 删除 ActionScript 2 变量中的空格

标签 actionscript string variables

假设我有一个包含以下内容的 XML 文件:

<description><![CDATA[

   <h2>lorem ipsum</h2>
   <p>some text</p>

]]></description>

我想在 ActionScript 2 中获取并解析为 HTML 文本,并在显示之前设置一些 CSS。问题是,Flash 会采用这些空格(换行符和制表符)并按原样显示。

<some whitespace here>
       lorem ipsum
       some text

我想要的输出是

lorem ipsum
some text

我知道我可以直接从 XML 文件中删除空格(我工作场所的 Flash 开发人员也建议这样做。我猜他不知道如何执行此操作 [叹气])。但这样做会导致读取 XML 文件中的部分变得困难,特别是当涉及大量标签时,这使得编辑变得更加困难。

所以现在,我正在寻找一种方法来去除 ActionScript 中的这些空格。我尝试使用 PHP 的 str_replace 等效项(从 here 获取)。但我应该用什么作为针(要搜索的字符串)? (我尝试输入 "\t""\r",似乎无法检测到这些空格)。

编辑:

现在我已经尝试将换行符作为针放入,它起作用了(意味着换行符成功被剥离)。

mystring = str_replace(newline, '', mystring);

但是,换行符只会被删除一次,这意味着在每个连续的换行符中(例如,一个换行符后面跟着另一个换行符)只能删除一个换行符。

现在,我不认为这是 str_replace 函数中的问题,因为除了换行符之外的每个连续字符都会被很好地删除。

对于 ActionScript 中如何处理此类内容非常困惑。 :-s

编辑2:

我已经尝试过 str_replace - 我所知道的一切,\n、\r、\t、换行符和制表符(通过按制表符键)。替换\n、\r 和\t 似乎没有任何效果。

我知道,通过成功地做到这一点,我的内容永远不会有真正的换行符。这正是我的意图。我可以按照我想要的方式格式化 XML,而无需 Flash 显示任何格式化内容。 :)

最佳答案

有几种方法可以解决这个问题。也许最简单的答案是,从某种意义上说,您的 Flash 开发人员可能是对的,您应该将空白移到 CDATA 容器之外。原因是,许多人(至少是我)倾向于认为 CDATA 中的所有内容都是“真实数据”,而不是标记。另一方面,CDATA 外部的空格通常被认为是不相关的,因此数据如下:

<description>

<![CDATA[<h2>lorem ipsum</h2>
<p>some text</p>]]>

</description>

将更容易理解和使用。 (Flash 开发人员可以使用 XML.ignoreWhite 属性来忽略 CDATA 外部的空格。)

话虽如此,如果您手动编辑 XML,那么我就能明白为什么使用您描述的格式会更容易。但是,如果多余的空格位于 CDATA 内部,那么它将不可避免地包含在您提取的字符串数据中,因此您唯一的选择是获取 CDATA 的内容并随后删除空格。

那么你的问题就简化为“如何从 AS2 中的字符串中去除前导/尾随空格?”。不幸的是,由于 AS2 不支持 RegEx,因此没有简单的方法可以做到这一点。我认为你最好的选择是从头到尾解析以找到第一个/最后一个非白色字符。沿着这些思路(未经测试的伪代码):

myString = stuffFromXML;
whitespace = " " + "\t" + "\n" + "\r" + newline;
start = 0;
end = myString.length;
while ( testString( myString.substr(start,1), whitespace ) ) { start++; }
while ( testString( myString.substr(end-1,1), whitespace ) ) { end--; }
trimmedString = myString.substring( start, end );

function testString( needle, haystack ) {
    return ( haystack.indexOf( needle ) > -1 );
}

希望有帮助!

编辑:我注意到在您的示例中,您还需要删除文本数据中的制表符和空格。这将很棘手,除非您可以保证您的数据除了用于格式化的选项卡之外永远不会包含“真实”选项卡。无论您如何处理 CDATA 标签,最好不要在实际内容中插入无关的格式,然后以编程方式将其删除。这只会让你自己的生活变得困难。

第二次编辑:至于要删除什么字符来摆脱换行符,部分取决于 XML 中实际开始的字符(这可能取决于生成文件的操作系统正在运行),部分取决于客户端计算机(显示闪存)认为什么字符是换行符。很多血淋淋的细节here 。但实际上,如果删除 \r\n\r\n,通常就能达到目的。这就是为什么我在示例代码中将\r 和\n 添加到“空白”字符串中。

关于actionscript - 删除 ActionScript 2 变量中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/390748/

相关文章:

flash - 如何在ActionScript 2.0中向打字机效果代码添加声音

flash - 如何追踪网页内的ActionScript?

c++ - 你会如何设计一个完美哈希的函数?

javascript - Eloquent Javascript - 关于参数对象的第 4 章

java - 线程中的异常 "AWT-EventQueue-0"java.lang.NumberFormatException : empty String

apache-flex - 如何使用 Flex 获得平滑的文本抓取?

apache-flex - ActionScript:事件处理程序何时执行?

arrays - 在Fortran中访问字符串中特定索引处的字符

javascript - 可以从数组中的键中删除 HTML 标签吗?

javascript - js中可以根据变量调用函数吗?