webForumDet fria alternativet

Substring - Splita vid läsning från en arrayList

.NET

11 svar · 407 visningar · startad av T_Codez

Medlem sedan juli 2001458 inlägg
Frågan#1

Hej

Nu har jag fastnat i min nybörjarvärld igen. Jag greppar inte riktigt Substring historien.
Och jag blir inte klokare av det jag hittat här på forumet då det inte riktigt tar upp mitt
lilla hinder.

Anyway...

Jag har fyllt en arrayList med data. Den innehåller 2 "fält" Namn och Telefon. Jag vill läsa
upp det i en listView med 3 kolumner: Förnamn, Efternamn och telefonnummer. Formatet i namndatan
är förnamn.efternamn, ibland förekommer det även kommatecken istället för en punkt i den formateringen.

I koden nedan ser ni hur det ser ut just nu. Jag hämtar namn 2 ggr och telefon en gång. Så nu är frågan.

Hur gör jag för att substringa/splitta ut dessa "person.namn" så att förnamn och efternamn kan separeras för stunden?

// Läs ut data från arrayListen och presentera i GUI (listViewen)
foreach(Person person in personList)
{
	ListViewItem lvi = new ListViewItem(person.namn); //Substringa fram till punkt och/eller komma.
	lvi.SubItems.Add(person.namn); //Substringa efter punkt och/eller komma.
	lvi.SubItems.Add(person.telefon);
	listView1.Items.Add(lvi);
}

Tacksam för alla hintar och förslag som ni kan komma på.

Tack för uppmärksamheten! :e

Medlem sedan nov. 20022 355 inlägg
#2
ArrayList list = new ArrayList();
list.Add("lasse,bengtsson");

string[] str;
char[] ch = new char[2];
ch[0] = '.';
ch[1] = ',';

str = list[0].ToString().Split(ch);
Medlem sedan juli 2001458 inlägg
#3

Hej igen.

Tack Mc Fetto. Det ser jättebra ut. Men tyvärr så kommar jag inte så längt med det i mitt nybörjarträsk. *suck*

Jag är i den situationen att jag håller på och kämpar mig upp till knästående läge i denna .NET/C#/Objekttänkande
värld.

Så jag tar gärna emot fler hintar/tankar/lösningar hur jag ska ta hand om denna snutt jag fick av Mc Fetto.

Bifogar lite mer kod som jag tror kan behövas...

private void button1_Click(object sender, System.EventArgs e)
{
	try
	{
		this.Cursor = Cursors.WaitCursor;//change the cursor to hover glass

		string dom = this.textBox1.Text;  //Usr anger domän.
		string tel = this.textBox2.Text;  //Usr anger nummer som finns i telnummer som sökes.
		string usr = this.textBox4.Text;  //Usr anger namn eller bokstäver som ingår i det namn han söker efter i AD:et.

		int nTotalObjects = 0;		
		System.DirectoryServices.DirectoryEntry entry = new System.DirectoryServices.DirectoryEntry("LDAP://" +dom );
			
		System.DirectoryServices.DirectorySearcher mySearcher = new System.DirectoryServices.DirectorySearcher(entry);
			
		mySearcher.Filter = "(&(objectClass=user)(displayName="+ usr +"*" +")(phone="+ tel +"*" +"))";

		//Done: En array som skapas för att läggas i listviewen.
		//ToDO: Den ska kunna sorteras på / Splitta sträng vid punkt. 
				
		ArrayList personList = new ArrayList();
				
		//ArrayList list = new ArrayList(); /*Hjälp från Webforum...*/
		//personList.Add("lasse,bengtsson");
			
		//string[] cutit;
		//char[] ch = new char[2];
		//ch[0] = '.';
		//ch[1] = ',';

		//str = personList[0].ToString().Split(ch);  /*Vart ska nu denna bakas in nu då*/

		foreach(System.DirectoryServices.SearchResult resEnt in mySearcher.FindAll())
		{
			System.DirectoryServices.DirectoryEntry de = resEnt.GetDirectoryEntry();

			// Läs in värden till arrayen som nyttjas av DataGriden och ListViewrn.
			personList.Add(new Person(de.Properties["name"].Value.ToString(), de.Properties["phone"].Value.ToString()));
			nTotalObjects++;
		}

		// Räknar hur många träffar det blir
		txtTotal.Text = nTotalObjects.ToString();
		this.Cursor = Cursors.Arrow;

		// Läs ut data från arrayListen och presentera i GUI (listViewn)
		foreach(Person person in personList)
		{
			ListViewItem lvi = new ListViewItem(person.Namn); 	//Substring fram till punkt och/eller komma.
			lvi.SubItems.Add(person.Namn); 			//Substring efter punkt och/eller komma.
		/*	lvi.SubItems.Add(person.Phone);			
			listView1.Items.Add(lvi);				
		}
	}
}

private void listView1_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e) /*Denna ska fungera med. Bör nog frågas om senare...*/
{
	TheColumnSorter.CurrentColumn  = e.Column;
	//listView1.Sort();
}

public class Person
{
	// Default Constructor
	public Person()
	{
	}

	// Egen Constructor med 2 inparametrar ska vara tre senare. 
	// Alternativt att man får "spränga fnamn.enamn i 2 delar senare"
	public Person(string fornamn, string phone)
	{
		this.fornamn = fornamn;
		this.Phone = phone;
	}

	private string fornamn;
	public string Namn
	{
		get
		{
			return fornamn;
		}
		set
		{
			fornamn = value;
		}
	}
	private string phone;
	public string Phone
	{
		get
		{
			return phone;
		}
		set
		{
			phone = value;
		}
	}
}
Medlem sedan juli 2001458 inlägg
#4

Så... Nu blev det rätt. :)

Alltså med lite felstavningar etc. Jag har på intet sätt kommit på rätt köl med lösninen. :OO

Medlem sedan nov. 20022 355 inlägg
#5

Då får du gärna posta svaret och markera tråden som löst så hittar vi andra som söker efter samma problem tråden lättare :)

Medlem sedan nov. 20022 355 inlägg
#6

Då får du gärna posta svaret och markera tråden som löst så hittar vi andra som söker efter samma problem tråden lättare :)

Medlem sedan juli 2001458 inlägg
#7

Tja Mc Fetto

Det ska jag göra när jag känner att jag kan komma vidare. För indirekt så har jag inte riktigt gjort det iom att jag inte fått det att rulla ännu.

Och på så vis känner jag att jag inte riktigt kan markera det som löst ännu. Men inom kort så kan jag förhoppningsvis göra det. Tror nog att jag tillhör de som inte slarvar allt för mycket med att markera trådar som lösta när de väl är det. :h

Och givetvis så kommer du få din "Credit" till slut.

Ändrade lite i mitt senaste inlägg då det alltför lätt kunde misstolkas som om jag funnit lösningen. * sorry för det *

/T

Medlem sedan nov. 20022 355 inlägg
#8

T_Codez skrev:

Så... Nu blev det rätt. :)

Du får ursäkta, jag trodde du hade löst det.. :) Att markera tråden har inget med "Credit" att göra utan att göra skker och ting enklare för andra :bire

Medlem sedan nov. 20022 355 inlägg
#9

personList, är det en ArrayList? Eller en enkel vektor med objekt av Person där du vill ta bort '.' och ',' eller vad är personlist?

R: sorry för frågan, läste din kod väldigt snabbt, allt står ju i den :)

Medlem sedan juli 2001458 inlägg
#10

Well... typ!?

Jo personList en arrayList som läst in namn & telefon ifrån Active Directoryt
via classen "person". Men jag antar att det i princip också är en "enkel vektor".

Sen vill jag läsa ut detta i en listView. Och i samband med det så vill jag att
i listViewrns 1:a kolumn ska allt fram till och med punkt/komma-tkn skrivas ut (förnamn),
i 2:a kolumnen ska allt efter punkt/komma-tkn skrivas ut (efternamn) och sen kommer
telefonnummer i kolumn3.

Och all den datan ska hämtas från arrayListen. Så indirekt så vill jag inte plocka bort
några tecken utan bara "läsa fram till ett tecken" samt "läsa från ett visst tecken fram
till slutet av strängen".

Trodde att det skulle finnas någon "TrimLeft()" eller något liknande vid utläsning av data...

Men det är å andra sidan kanske bättre att försöka fixa det innan det läggs in i arraylisten.

Klen förtydling men jag hoppas du blev klokare av detta.

/T

Medlem sedan nov. 20022 355 inlägg
#11

såhär:

char[] ch = new char[2];
ch[0] = '.';
ch[1] = ',';
string[] str;
foreach(Person person in personList)
{
	str = person.Namn.Split(ch);
	ListViewItem lvi = new ListViewItem(str[0]); //Substring fram till punkt och/eller komma.
	lvi.SubItems.Add(str[1]); //Substring efter punkt och/eller komma.
	lvi.SubItems.Add(person.Phone);
	listView1.Items.Add(lvi);
}

Låt säga att man har en sträng: "xx.yy,zz"
då reurnerar split() en vektor string[] med tre element (xx, yy, zz)

Medlem sedan juli 2001458 inlägg
#12

Tack ska du ha MC FETTO! :L

DU RULAR! :birp

Du kandiderar lätt till min egna webForum Hall Of Fame. :e

269 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)