Tagliare stringa2

martedì 10 febbraio 2009 - 11.47

toniovigi Profilo | Expert

Ciao ragazzi,scusate ma mi è toccato ricreare un thread dato che il mio precedente lo accettato per sbaglio

Volevo capire come ricavare una sottostringa dato che non riesco

String pers = "pippo pluto ag12345 paperino "

io voglio solo ricavare ag12345 ,

ho provato a fare lo split e poi ricavare l'elemento [3], solo che la mia stringa e variabile , a volte lunga in un modo a volte in un altro
ma la sottostringa ag12345 cè sempre ovviamente 12345 e un numero k cambia quindi io devo ricavare ag+ i 5 caratteri dopo

il resto non mi serve

come fare'?Ho provato substring ma vuole che li passo il punto d partenza e la lunghezza, ma nn posso sapere un punto d partenza se ho appunto la stringa
variabile

Come ovviare??Grazie e scusate ancora per aver riaperto il thread!

alexmed Profilo | Guru

Ciao
Una volta fatto lo Split ed hai ricavato la stringa che ti interessa "ag12345" fai il .ToString.Replace("ag","")

Ciao
alexmed

---------

Il codice potrebbe essere indicativamente questo (ci sono 2 soluzioni)

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

toniovigi Profilo | Expert

Ma nn cè un metodo che fa lo stesso di substring che invece di passare come paramentro il punto di partenza gli dico il carattere di partenza e da quel carattere quanti carattere prendere dopo??quindi "ag"+5 caratteri?
Grazie

alexmed Profilo | Guru

Ciao
E se hai una persona che si chiama AGnese AGnolotti??
alexmed

toniovigi Profilo | Expert

e anche vero..e ma lo stesso con il tuo esempio..no??

In c# lo hai che lo testo?

alexmed Profilo | Guru

Si e no,
Nel primo caso solo se il quarto elemento (paperino) quindi quello dopo "ag12345" inizia con "ag"
Nel secondo no perchè vai a considerare solo il 3° elemento.

Nel primo caso cmq puoi andare ad aggiungere una clausola IsNumeric:

For i As Integer = 0 To mySplit.GetUpperBound(0) - 1 Dim myTXT As String = mySplit(i).ToString If myTXT.StartsWith("ag") = True Then myNumber = myTXT.Replace("ag", "") If IsNumeric(myNumber) = True Then MsgBox(myNumber) End If End If Next

Ciao


alexmed

toniovigi Profilo | Expert

E ma comunque non posso considerare il 3 elemento perchè come ti dicevo la mia stringa e variabile , quel ag12345 puo essere il terzo come puo essere il 2 o il 4,

cmq ,hai questo ultimo esempio in c#??Grazie Antonio

alexmed Profilo | Guru

Ambasciatore non porta pena


{
for (int i = 0; i <= mySplit.GetUpperBound(0) - 1; i++) {
string myTXT = mySplit(i).ToString;
if (myTXT.StartsWith("ag") == true) {
myNumber = myTXT.Replace("ag", "");
if (Information.IsNumeric(myNumber) == true) {
Interaction.MsgBox(myNumber);
}
}
}
}

L'ho tradotto con l'ausilio di questo sito
http://www.developerfusion.com/tools/convert/vb-to-csharp/

Ciao
alexmed

Jeremy Profilo | Guru

>L'ho tradotto con l'ausilio di questo sito
>http://www.developerfusion.com/tools/convert/vb-to-csharp/

Tutte tu le sai
Grazie...
Ciao

alexmed Profilo | Guru

Perchè non và bene?
Io di C# non ci capisco nulla (come se di VB ne capissi )
alexmed

Jeremy Profilo | Guru

>Perchè non và bene?
Altrochè se va bene
A volte divento scemo(abituato al vb) a convertire i pezzi di codice in c#.

Grazie ancora....
Ciao

alexmed Profilo | Guru

Vuoi dire che non lo sapevi!?!?!?


alexmed

Jeremy Profilo | Guru

Giuro

alexmed Profilo | Guru

Non ci posso credere!!!!!

PS
Io lo saputo un mese fà!!
alexmed

toniovigi Profilo | Expert

Ragazzi, alla fine ho implementato sto codice, solo che da problemi;date un occhiata

string mat="";
string[] tagliata = t.Text.Split(' ');
for (int i = 0; i < tagliata.Length; i++)
{
if ((tagliata[i].StartsWith("ag") || tagliata[i].StartsWith("AG")) && IsNumeric(tagliata[i].Substring(2, 5)) == true)
{
mat = tagliata[i];
MessageBox.Show(mat);
}

if ( (tagliata[i].StartsWith("co") || tagliata[i].StartsWith("CO")) && IsNumeric(tagliata[i].Substring(2, 5)))
{
mat = tagliata[i];
MessageBox.Show(mat);
}
}

if (MessageBox.Show("Sei sicuro di voler eliminare l'utente "+mat+" ?", "Deskview", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
MessageBox.Show("Cancel");
else MessageBox.Show("niente");

Il codice funziona e come vedete prima visualizzo mat in 2 dei 2 casi dell'if,con il messagebox.show(mat) , poi chiedo "sei sicuro di voler...."Dopo le message box cancel o niente di nuovo mi appare la message box di prima con mat,perchè questo?? Ho fatto il debug passo passo ma e tutto ok..nn capisco il xke..

Sembrerebbe che ho sistemato ma non capisco il perchè,provate a spigarmelo voi

praticamente

private void contextMenuStrip2_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
if (e.ClickedItem.Text == "Cancella Utente")
e.ClickedItem.Click += new EventHandler(ClickedItem_Click);

il codice che ho scritto su viene gestito nella funzione void ClickedItem_Click(object sender, EventArgs e)

adesso io cosa ho fatto ho tolto e.ClickedItem.Click += new EventHandler(ClickedItem_Click);
e ho messo tutto il codice scritto in alto dopo if (e.ClickedItem.Text == "Cancella Utente")
{ mio codice di prima} e adesso e tutto ok,
perchè questo??
Grazie
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5