![]() |
|
||||||||||
|
|||||
|
[+3 17.03.11]
Регистрация: Feb 2011
Сообщений: 27
|
подскажите пожалуйста как вырезать нужный кусок из html файла,
(html в виде строки ~20 000+ символов) а то обычный substring не работает, все зависает!!! нужно вырезать начиная с "on the Web:" и + ещё 90 символов вперед. как это сделать? |
|
|||||
|
А что если это как набор байт в ByteArray загрузить и руками по байтам лазить?
(хотя сомнительно что-то, всего 20 000 символов и траблы уже появились) Речь точно про AS3? Последний раз редактировалось expl; 18.03.2011 в 22:01. |
|
|||||
|
[+3 17.03.11]
Регистрация: Feb 2011
Сообщений: 27
|
сейчас попробую.
да, as3.0 function onLoaded(evt:Event):void { var ansStr:String = new String(); ansStr = myLoader.data; trace(ansStr = ansStr.substring(9000,9050)); } не могли бы привести пример про ByteArray? Последний раз редактировалось leo150; 18.03.2011 в 22:45. |
|
|||||
|
1. Надо прочитать в хелпе про загрузку бинарных данных с помощью URLLoader и загрузить текст как бинарник
2. Допустим он у нас есть var bytes:ByteArray = ... var length:int = bytes.length; for (var i:int = 0; i < length; i++) { var byte:int = bytes[i]; if (byte == "on the Web:".charCodeAt(0)) { byte = bytes[i + 1] if (byte == "on the Web:".charCodeAt(1)) { ... ... if (byte == "on the Web:".charCodeAt(10)) { trace(bytes.readUTFBytes(90)); break; } } } } Но суть именно такая - если сработает - думаю, сможете его соптимизировать. Кстати, а если без всякого ByteArray, getCharAt или getCharCodeAt на такой большой строке работают? Может ими? |
|
|||||
|
Modus ponens
|
package { import flash.display.Sprite; import flash.utils.getTimer; public class TestLongString extends Sprite { private static const POOL:Array = []; public function TestLongString() { super(); // source.length: 14999 1 // source.indexOf 14999 0 // source.substring 12345 0 this.testSubsting(); } private function testSubsting():void { var timer:int = getTimer(); var source:String = this.generate(); trace("source.length:", source.length, getTimer() - timer); source = source + "12345" + source; var index:int = source.indexOf("12345"); timer = getTimer(); trace("source.indexOf", index, getTimer() - timer); timer = getTimer(); var subseq:String = source.substring(index, index + 5); trace("source.substring", subseq, getTimer() - timer); } private function generateDictionary():String { var i:int = 65; POOL.length = 0; while (i++ < 90) POOL[POOL.length] = String.fromCharCode(i); return POOL.join(); } private function generate():String { var dictionary:String = this.generateDictionary(); POOL.length = 0; var i:int; while (i++ < 300) POOL[POOL.length] = dictionary; dictionary = POOL.join(); POOL.length = 0; return dictionary; } } } ![]() ЗЫ: Кто вас научил new Sting() - более странного способа создать пустую строку в AS3 не существует. Не делайте так никогда - используйте литерал пустой строки (""), так и быстее, и не запутаете никого.
__________________
Hell is the possibility of sanity |
|
|||||
|
[+3 17.03.11]
Регистрация: Feb 2011
Сообщений: 27
|
все, решил проблему.
надо было перезагрузить cs5. сижу с 12! Последний раз редактировалось wvxvw; 19.03.2011 в 00:00. |
![]() |
![]() |
Часовой пояс GMT +4, время: 08:46. |
|
|
« Предыдущая тема | Следующая тема » |
|
|