Visualizzazione dei risultati da 1 a 7 su 7

Discussione: espressioni regolari

  1. #1

    espressioni regolari

    Ciao,
    Con le espressioni regolari in asp dovrei creare una funzione che estragga i primi n caratteri tenendo conto dei caratteri unicode al suo interno.
    I caratteri unicode sono fatti in questo modo: "& # 1 0 7 7 ;"(ho dovuto scriverli con gli spazi perche' questo form li codifica..) cioe' iniziano con una "&#" e finiscono con un ";"
    esempio data una stringa "pippo& # 1 0 7 7 ;pluto" vorrei estrarre i primi 7 caratteri tenendo conto degli unicode dovrei avere "pippo& # 1 0 7 7 ;p"

    In pratica dovrebbe fare la stessa cosa della left(stringa, ncar) ma più intelligente.
    E si potrebbe chiamare left_unicode(stringa_unicode, ncar)

    Spero di essere stato abbastanza chiaro.


    Ciao

  2. #2
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Ciao.

    Qui tutto lo scibile sulle r.e.:

    http://www.regular-expressions.info/

  3. #3

    Re: espressioni regolari

    Originariamente inviato da scioco
    Ciao,
    Con le espressioni regolari in asp dovrei creare una funzione che estragga i primi n caratteri tenendo conto dei caratteri unicode al suo interno.
    I caratteri unicode sono fatti in questo modo: "& # 1 0 7 7 ;"(ho dovuto scriverli con gli spazi perche' questo form li codifica..) cioe' iniziano con una "&#" e finiscono con un ";"
    esempio data una stringa "pippo& # 1 0 7 7 ;pluto" vorrei estrarre i primi 7 caratteri tenendo conto degli unicode dovrei avere "pippo& # 1 0 7 7 ;p"

    In pratica dovrebbe fare la stessa cosa della left(stringa, ncar) ma più intelligente.
    E si potrebbe chiamare left_unicode(stringa_unicode, ncar)

    Spero di essere stato abbastanza chiaro.


    Ciao
    codice:
    function no_unicode(strng)
    
    	Dim objRegExp
    	Set objRegExp = New Regexp
    	objRegExp.IgnoreCase = True
    	objRegExp.Global = True
    	
    	objRegExp.Pattern = "&#.*;"
    	strng=objRegExp.replace(strng,"")
    	
    	
    	set objRegExp = Nothing
    	no_unicode = strng
    End Function
    
    
    response.Write no_unicode("ciao & # 1 0 7 7 ;a tutti")

  4. #4
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367

    Re: Re: espressioni regolari

    Originariamente inviato da santino83_11_04
    codice:
    function no_unicode(strng)
    
    	Dim objRegExp
    	Set objRegExp = New Regexp
    	objRegExp.IgnoreCase = True
    	objRegExp.Global = True
    	
    	objRegExp.Pattern = "&#.*;"
    	strng=objRegExp.replace(strng,"")
    	
    	
    	set objRegExp = Nothing
    	no_unicode = strng
    End Function
    
    
    response.Write no_unicode("ciao & # 1 0 7 7 ;a tutti")
    a santi'! Ma hai letto cosa chiede scioco?
    Tu hai fatto un replace dei caratteri unicode (e trallaltro non è nenache giusto )

  5. #5
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    io ho fatto questa funzioncina... non l'ho testata molto ma credo vada bene...
    codice:
    function LeftUnicode(stringa,caratteri)
    	Set objRE = New RegExp 
    	objRE.Global = True 
    	objRE.IgnoreCase = True
    	objRE.Pattern = "&#\d*?;"
    	set ris = objRE.Execute(stringa)
    	strTemp = Left(objRE.Replace(stringa,""),caratteri)
    	if ris.count>0 then
    		for each rr in ris
    			if rr.FirstIndex<Len(strTemp) then
    				prima = Mid(strTemp,1,rr.FirstIndex)
    				dopo = Mid(strTemp,rr.FirstIndex+1)
    				strTemp = prima & rr.value & Left(dopo,Len(dopo)-1)
    			else
    				exit for
    			end if
    		next
    	end if
    	LeftUnicode=strTemp
    end function
    
    tuaStringa = "pippoеplutoеbasta"
    numeroCaratteri = 7
    Response.Write tuaStringa & "<hr>" & numeroCaratteri & "<hr>" & LeftUnicode(tuaStringa,numeroCaratteri)
    preleva il codice quotando il mio messaggio e famme sape' se funzia a modo

  6. #6

    Re: Re: Re: espressioni regolari

    Originariamente inviato da willybit
    a santi'! Ma hai letto cosa chiede scioco?
    Tu hai fatto un replace dei caratteri unicode (e trallaltro non è nenache giusto )
    nun te incazza avevo capito che non voleva tener in considerazione gli unicode (quindi replace a "")...adesso rileggendo bene ho visto che era diversa la questione...

    per quanto riguarda il pattern, mi inchino al maestro...però per quel poco che ho testato anche il mio funzionava...anche troppo perchè avrebbe cancellato una frase del tipo &#pippo e il mio amico;


  7. #7
    grazie willybit con un po' di ritardo..
    eccola come l'ho risistemata
    codice:
     function LeftUnicode(stringa,caratteri)
    	Set objRE = New RegExp 
    	objRE.Global = True 
    	objRE.IgnoreCase = True
    	objRE.Pattern = "(.*?)&#\d*?;"
    	set ris = objRE.Execute(stringa)
    	i=0
    	while i < caratteri-1 AND i<  ris.count
    		strTemp = strTemp & ris(i)
    		i=i+1
    	Wend
    	
    	LeftUnicode=strTemp
    end function
    anche se non tiene conto dei caratteri che non sono unicode.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.