|  |  |  | @ -9,7 +9,10 @@ import io.legado.app.exception.RegexTimeoutException | 
			
		
	
		
			
				
					|  |  |  |  |  */ | 
			
		
	
		
			
				
					|  |  |  |  | fun CharSequence.replace(regex: Regex, replacement: String, timeout: Long): String { | 
			
		
	
		
			
				
					|  |  |  |  |     val startTime = System.currentTimeMillis() | 
			
		
	
		
			
				
					|  |  |  |  |     val charSequence = this | 
			
		
	
		
			
				
					|  |  |  |  |     val charSequence = ListenerCharSequence(this) { | 
			
		
	
		
			
				
					|  |  |  |  |         //根本没有执行到这步,和网上的方案不符 | 
			
		
	
		
			
				
					|  |  |  |  |         print(it) | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  |     val isJs = replacement.startsWith("@js:") | 
			
		
	
		
			
				
					|  |  |  |  |     val replacement1 = if (isJs) replacement.substring(4) else replacement | 
			
		
	
		
			
				
					|  |  |  |  |     val pattern = regex.toPattern() | 
			
		
	
	
		
			
				
					|  |  |  | @ -33,19 +36,24 @@ fun CharSequence.replace(regex: Regex, replacement: String, timeout: Long): Stri | 
			
		
	
		
			
				
					|  |  |  |  |     return stringBuffer.toString() | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | class ListenerCharSequence(private val inner: CharSequence) : CharSequence { | 
			
		
	
		
			
				
					|  |  |  |  | class ListenerCharSequence( | 
			
		
	
		
			
				
					|  |  |  |  |     private val inner: CharSequence, | 
			
		
	
		
			
				
					|  |  |  |  |     private val charAtListener: ((Int) -> Unit) | 
			
		
	
		
			
				
					|  |  |  |  | ) : CharSequence { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     var charAtListener: ((Int) -> Unit)? = null | 
			
		
	
		
			
				
					|  |  |  |  |     override fun toString(): String { | 
			
		
	
		
			
				
					|  |  |  |  |         return inner.toString() | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     override val length: Int = inner.length | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     override fun get(index: Int): Char { | 
			
		
	
		
			
				
					|  |  |  |  |         charAtListener?.invoke(index) | 
			
		
	
		
			
				
					|  |  |  |  |         charAtListener.invoke(index) | 
			
		
	
		
			
				
					|  |  |  |  |         return inner[index] | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     override fun subSequence(startIndex: Int, endIndex: Int): CharSequence { | 
			
		
	
		
			
				
					|  |  |  |  |         return inner.subSequence(startIndex, endIndex) | 
			
		
	
		
			
				
					|  |  |  |  |         return ListenerCharSequence(inner.subSequence(startIndex, endIndex), charAtListener) | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
	
		
			
				
					|  |  |  | 
 |