2017-07-04 2 views
-3

Ich habe eine Zeichenfolge wie folgt:und zu einem Teil einer Zeichenfolge durch erste und das letzte Auftreten des Charakters Entfernen

{something:something}Some data will be here 

Heres, wie seine Einstellung:

{username:password}data 

Wie kann ich die bekommen { Benutzername: Passwort} Teil und entfernen Sie es aus der vollständigen Zeichenfolge? Ich muss den Benutzernamen und das Passwort überprüfen und dann die Daten (alles nach {etwas: etwas}) an den Benutzer senden.

Vorzugsweise würde Ich mag den Benutzernamen erhalten: Passwort ohne die {}, so kann ich nur geteilt durch:

+1

Versuchen regex – FCin

+1

Was haben Sie bisher versucht? Was hast du gegoogelt? – taquion

+0

Ich kann nichts auf Google finden. – Keriosk

Antwort

0

Sie zuerst substring und index of entfernen Sie die unerwünschten Zeichen verwenden können.

Dies gibt Ihnen die Daten Teilannahme} tritt nur einmal auf.

+0

Hoppla, mein Schlechter. Wird es ändern. Danke, dass du es aufgezeigt hast. –

+1

Ich glaube nicht, dass das so funktioniert, 'input.Substring (input.IndexOf ("} "));' wird '} data' zurückgeben. Unterstring gibt den Text beginnend bei Ihrem Index oder zwischen zwei Indizes zurück, wenn Sie liefern ein Anfang und ein Ende. – Andrew

+0

Ja, du hast Recht, ich habe es jetzt behoben. War früher ein Fehler. –

1

Hier ist eine regex Lösung:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Text.RegularExpressions; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string input = "{something:something}Some data will be here"; 

      string pattern = @"\{(?'username'[^:]+):(?'password'[^\}]+)\}(?'data'.*)"; 

      Match match = Regex.Match(input,pattern); 

      Console.WriteLine("Username : '{0}', Password : '{1}', Data : '{2}'", 
       match.Groups["username"].Value, match.Groups["password"].Value, match.Groups["data"].Value); 
      Console.ReadLine(); 
     } 
    } 
} 
0
public int IndexOfNth(string str, string value, int nth) 
     { 
      int offset = str.IndexOf(value); 
      for (int i = 0; i < nth; i++) 
      { 
       if (offset == -1) return -1; 
       offset = str.IndexOf(value, offset + 1); 
      } 
      return offset; 
     } 

diese Methode gibt den Index des Wertes Sie ex) @ fron der str und der nth Position ex) 2 kehrt die 3. finden wollen Auftreten von @ in chris @ so @ sk @

kann dies zu Teilzeichenfolge verwendet wird Strings

vielleicht

dies funktionieren wird:

string x= "{username:password}data"; 
string username = x.substring(1,IndexoOfNth(x,":",0)-1); 
Verwandte Themen