2016-06-29 9 views
0

Ich habe eine Reihe von Code in C# Ich möchte in der Datenbank speichern, was der Benutzer in das Textfeld eingibt.dynamische Teilzeichenfolge in C#

Der Benutzer gibt in das Textfeld wie dieses

input namexyzpan9837663placeofbirthmumbailocationwadala 

Dies ist, was Benutzer

betritt (name: xyz pan: 9.837.663 -ort: mumbai Ort: Wadala)

Ausgabe in die Datenbank

xyz 9.837.663 mumbai Wadala

ODER

Name xyzapan72placeofbirthgoalocationpanji

(> Name: XYZA pan: 72 -ort: goa Ort: Panji)

Ausgabe in die Datenbank

XYZA 72 goa PANJI

Name, Alter, Standort und placeofbirth statisch sind, sondern der Wert innerhalb sind sie dynamisch

Ich weiß Teilzeichenfolge hilfreich ist, aber ich weiß nicht, wie es zu benutzen.

+2

Name, Pfanne und Geburtsort ist statisch? – NEER

+0

name pan placeofbirth und location sind immer statisch für jeden benutzer –

+1

Ihre Frage ist nicht gut gebildet. Bitte überprüfen Sie dies: [fragen], um herauszufinden, wie es formuliert werden sollte. Was hast du bis jetzt versucht? Wo steckst du fest? –

Antwort

3

Verwendung Split verwenden können, wenn die Schlüsselwörter sind statisch:

string strMain = "namexyzpan9837663placeofbirthmumbailocationwadala"; 

var results = strMain.Split(new string[] { "name", "pan", "placeofbirth", "location" }, StringSplitOptions.RemoveEmptyEntries); 

string name = results[0]; 
string pan = results[1]; 
string location = results[2]; 

Sie sagten, Sie nicht wissen, wie Substring zu verwenden, auch hier funktioniert es:

Beachten Sie, dass der zweite Parameter für Diese Methode ist die Länge der zu verwendenden Zeichenfolge und nicht der Index, bei dem gestoppt werden soll.

string strMain = "namexyzpan9837663placeofbirthmumbailocationwadala"; 

int indexOfName = strMain.IndexOf("name"); 
int indexOfPan = strMain.IndexOf("pan"); 
int indexOfBirth = strMain.IndexOf("placeofbirth"); 
int indexOflocation = strMain.IndexOf("location"); 

int effectiveIndexOfName = indexOfName + "name".Length; 
int effectiveIndexOfPan = indexOfPan + "pan".Length; 
int effectiveIndexOfBirth = indexOfBirth + "placeofbirth".Length; 
int effectiveIndexOflocation = indexOflocation + "location".Length; 

string name1 = strMain.Substring(effectiveIndexOfName, indexOfPan- effectiveIndexOfName); 
string pan1 = strMain.Substring(effectiveIndexOfPan, indexOfBirth - effectiveIndexOfPan); 
string birth1 = strMain.Substring(effectiveIndexOfBirth, indexOflocation - effectiveIndexOfBirth); 
string location1 = strMain.Substring(effectiveIndexOflocation); 

namenamepan9837663placeofbirthmumbailocationwadala Werke der zweiten Methode. Aber namepanpan9837663placeofbirthmumbailocationwadala ist ein interessanter Fall, der definitiv eine Abhilfe benötigt.

+4

namennamepan9837663placeofbirthmumbailocationwadala? – NEER

+0

namexyzpan9837663placeofbirthmumbailocationwadala THIS IS DYNAMIC –

+0

funktioniert nicht immer druckt diese xyz 9.837.663 mumbai Wadala –

2

Regex ist für solche Fälle konzipiert.

var input = @"namexyzpan9837663placeofbirthmumbailocationwadala"; 

var match = Regex.Match(input, @"^\s*" 
    + @"name\s*(?<name>\w+?)\s*" 
    + @"pan\s*(?<pan>\w+?)\s*" 
    + @"placeofbirth\s*(?<placeOfBirth>\w+?)\s*" 
    + @"location\s*(?<location>\w+)\s*" + @"$"); 

var name = match.Groups["name"].Value; 
var pan = match.Groups["pan"].Value; 
var placeOfBirth = match.Groups["placeOfBirth"].Value; 
var location = match.Groups["location"].Value; 
+0

was bedeutet das? @ "name \ s * (? \ w +?) \ S *" –

+1

Es ist 'Regulärer Ausdruck', mit dem Sie alle Muster abgleichen können. '\ s *' bedeutet Leerzeichen, '\ w +?' bedeutet irgendwelche Wörter. https://msdn.microsoft.com/en-us/library/az24scfc(v=vs.110).aspx – Tommy

+0

danke sir. Ich werde versuchen, dies jetzt –

0

Haben Sie das geknackt? oder noch auf richtige Antwort warten?

+1

Ich warte immer noch auf die richtige Antwort –