2016-11-15 3 views
-4

Gibt es eine Möglichkeit, Teilstrings aus meiner Zeichenfolge auf der Grundlage eines Bezeichners zu entfernen?Entfernen Sie eine Teilzeichenkette von String

Zum Beispiel habe ich:

string codeID = "347439>Dome"; 

ich nur den Teil der Zeichenfolge haben wollen, die vor >

auftritt Das Ergebnis sollte wie folgt aussehen:

string newCodeId = "347439" 

Ist es möglich?

+2

Haben Sie etwas noch versucht? Vielleicht sehen Sie sich die Dokumentation für die IndexOf & Substring-Methoden an. – PaulF

+2

Ja, teile und hole das erste Element oder erhalte einen Teilstring bis zum ersten Vorkommen von '>' (benutze 'IndexOf ("> ")'). –

Antwort

4

dies eine weitere Möglichkeit sein könnte:

string codeID = "347439>Dome"; 

string newCodeId = codeID.Split('>')[0]; 

Console.WriteLine(newCodeId); 

Es nutzt die String.Split() Methode, die eine string[] zurückgibt. Um den linken Teil der string hier zu bekommen, nahm ich das erste Element im Array. Der Rest der Zeichenfolge befindet sich (in diesem Fall) in Position 1.

in dem Fall, dass nicht > Trennzeichen in der Zeichenfolge ist. Es wird wieder nur die gesamte alte Zeichenfolge in Position [0]

3

können Sie Split() Methode verwenden:

string codeID = "347439>Dome"; 
string result = codeID.Split('>')[0]; 
+0

20 Sekunden schneller! ;) chapó –

0

sollte dies alles nach dem ‚>‘

var newCodeId = Regex.Replace(codeID , "[>].*", string.Empty, RegexOptions.IgnoreCase) 
+2

Mit einem Regex, um dies zu lösen ist wie mit einem Vorschlaghammer, um eine Walnuss zu öffnen – Liam

+0

Er hat nicht angegeben, wie er es tun wollte. Ich verstehe, dass nicht jeder reguläre Ausdrücke zu schätzen weiß, in solchen Fällen finde ich es einfacher. – DaImTo

+0

Es ist mehr die Ineffizienz. Die RegEx-Engine ist in C# nicht besonders effizient. Dies hat einen erheblichen Overhead im Vergleich zu "Substring()". Wie nicht ein großes Problem in diesem Szenario, aber persönlich werde ich in der Regel nur eine Regex als letzten Ausweg verwenden. – Liam

0

ersetze ich mit Fubo Antwort bin einverstanden, aber Sie können auch geteilt die Zeichenfolge mit string.split() Funktion. und kann den ersten Indexwert annehmen.

string codeID = "347439>Dome"; 
string result = codeID.Split('>')[0]; 
0

könnten Sie auch System.Linq:

string result = codeID.Split('>').First(); 
0

Methode: SubString()

string codeID = "347439>Dome"; 
char splitChar = '>'; 
if (codeID.Contains(splitChar)) 
{ 
int charIndex = codeID.IndexOf(splitChar); 
string subString = codeID.Substring(0,charIndex); 
} 
Verwandte Themen