Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Selezionare un tot di parole in un testo

    Data una variabile qualsiasi..

    codice:
    varText = "Giorgio sta mangiando una mela che sa di cannella acida, forse perché il cervello si era già bruciato di acidi molto tempo prima"
    Detta roprio a casa

    Come faccio, se cerco una parola (solo una parola) contenuta in un'altra variabile come:

    codice:
    varSearch = "cannella"
    A selezionare e immettere in un'altra variabile varResult (per esempio) la parola cercata con le tre prima che la precedono e la tre che la seguono, in modo che varResult diventi:

    codice:
    varResult = "che sa di cannella  acida, forse perché"
    Qualcuno può aiutarmi?
    Porc le botte

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    codice:
    replace(varText,varSearch," "& varSearch  &" ")
    Roby

  3. #3
    Il replace funziona, ma me ne serve uno che prenda due o tre parole prima e due o tre dopo.. sennò mi ricompare il testo intero

    come nell'esempio che ho fatto: se in

    varText = "Giorgio sta mangiando una mela che sa di cannella acida, forse perché il cervello si era già bruciato per i troppi acidi"

    e io cerco "cannella"

    varResult deve essere:

    varResult = "che sa di cannella acida forse perché"

    capito??
    Porc le botte

  4. #4
    O per semplificare la cosa: come faccio per selezionare le prime 7 parole di varText?
    Porc le botte

  5. #5
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Usi la Split() sullo spazio e prendi i primi 7 elementi dell'array.

    Roby

  6. #6

    Re: Selezionare un tot di parole in un testo

    Originariamente inviato da Sanjet
    Qualcuno può aiutarmi?
    prova questo

    codice:
    <%
    stringa="acidi"
    
    varText = "Giorgio sta mangiando una mela che sa di cannella acida, forse perché il cervello si era già bruciato per i troppi acidi"
    Response.Write "testo:" & varText & "
    "
    Response.Write "stringa: " & stringa & "
    "
    
    'splitto stringa
    myarray=Split(varText," ")
    'cerco parola all'interno della stringa
    numelem=ubound(myarray)
    for i=0 to numelem
    	if stringa=myarray(i) then
    		indice=i
    		exit for
    	end if
    next
    'nuova stringa
    newstring=""
    
    'Se la parola cercata non è la prima,
    ' calcolo gli indici per recuperare le parole precedenti
    if indice>0 then
    	select case indice
    		case 1:start=0:toend=0
    		case 2:start=0:toend=1
    		case 3:start=0:toend=2
    		case else start=indice-3:toend=indice-1
    	end select
    
    	for i=start to toend 
    		newstring= newstring & myarray(i) & " "
    	next
    	
    end if
    'inserisco la stringa
    newstring=newstring & "" & stringa & " "
    
    'Se la parola cercata non è l'ultima,
    ' calcolo gli indici per recuperare le parole successive
    if indice<>numelem then
    	select case indice
    		case numelem-1:	start=numelem:toend=numelem
    		case numelem-2:	start=numelem-1:toend=numelem
    		case numelem-3:	start=numelem-2:toend=numelem
    	end select
    
    	for i=start to toend
    		newstring=newstring & myarray(i) & " "
    	next
    end if
    'stampo la stringa finale
    Response.Write newstring
    
    %>

  7. #7
    Due cose non van bene:

    1 - Mi ripete, dopo la parola cercata, le tre parole precedenti (cioè le 3 precedenti = 3 seguenti XD se le prime 3 sono "grazie di cuore", le ultime 3 sono "grazie di cuore")

    2 - In certe (in cui, forse, gli array non sono abbastanza.. o non saprei per cos'altro) da questo errore:
    codice:
    Microsoft VBScript runtime error '800a0009' 
    
    Subscript out of range: 'i'
    ??
    Porc le botte

  8. #8
    up
    Porc le botte

  9. #9
    E' stato un bel esercizio, ancora migliorabile però...
    codice:
    <%
    varText = "Giorgio sta mangiando una mela che sa di 'cannella' acida, forse perché il cervello si era già bruciato di acidi molto tempo prima"
    varSrc = "cannella"
    iScarto = 3
    arrCaratteri= array(".",",",";",":","!","?","'")
    
    if instr(varText," ") > 0 then
    	varText = split(varText)
    end if
    
    if isArray(varText) then
    	for i = 0 to uBound(varText)
    		tempParola = varText(i)
    		elA = false
    		for y = 0 to uBound(arrCaratteri)
    			if right(tempParola,1) = arrCaratteri(y) then
    				elA = true
    				tempParola = left(tempParola,len(tempParola) - 1)
    				exit for
    			end if
    		next
    		elB = false
    		for z = 0 to uBound(arrCaratteri)
    			if left(tempParola,1) = arrCaratteri(z) then
    				elB = true
    				tempParola = mid(tempParola,2)
    				exit for
    			end if
    		next
    		if tempParola = varSrc then 
    			outString = "" & tempParola & ""
    			if elA then outString = outString & arrCaratteri(y)
    			if elB then outString = arrCaratteri(z) & outString
    			exit for				
    		end if
    	next
    	i = i - 1	
    	if len(outString) > 0 then
    		if (i - iScarto) < 0 then
    			min = lBound(varText)
    		else
    			min = i - iScarto
    		end if
    		for x = i to min + 1 step - 1
    			outString = varText(x) & " " & outString
    		next
    		i = i + 2
    		if (i + iScarto) > uBound(varText) then
    			max = uBound(varText)
    		else
    			max = i + iScarto
    		end if
    		for x = i to max - 1
    			outString = outString & " " & varText(x)
    		next
    	end if
    	if len(outString) > 0 then
    		outString = "... " & outString & "..."	
    	else
    		outString = "Nessuna corrispondenza"
    	end if
    else
    	if varText = varSrc then 
    		outString = "" & varText & ""
    	else
    		outString = "Nessuna corrispondenza"
    	end if
    end if
    response.write outString
    %>

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 © 2026 vBulletin Solutions, Inc. All rights reserved.