Jak pobrać fragment stringa?

0

Witam

Mam string "centosso\jan.kowalski"

jak pobrać z niego tylko ciąg znaków po backslash-u resztę usunąć. Dodam że ilość znaków do backslash i po może się zmieniać.

Czyli w wyniku zawsze ma być to co jest po backslash-u jan.kowalski

Dzięki za pomoc.

1

Np metoda Split.

0
szydlak napisał(a):

Np metoda Split.

A co jeśli po pierwszym ukośniku będzie ich jeszcze kilka? ;)

1
grzesiek51114 napisał(a):
szydlak napisał(a):

Np metoda Split.

A co jeśli po pierwszym ukośniku będzie ich jeszcze kilka? ;)

jeśli to co nas interesuje jest po ostatnim to wystarczy znac długośc tablicy i wziąć ostani element z tablicy

0
grzesiek51114 napisał(a):
szydlak napisał(a):

Np metoda Split.

A co jeśli po pierwszym ukośniku będzie ich jeszcze kilka? ;)

metoda Split może przyjąć parametr z maksymalną ilością podciągów do zwrócenia, wystarczy tam wpisać 2, ale zależy jaki efekt chce uzyskać autor (wszystko po pierwszym backslashu czy wszystko po ostatnim). Zgaduję że chodzi o rozdzielenie użytkownika od nazwy domeny, więc taki link podałem z rozwiązaniami opartymi na indexOf

1

Z tego co widać autor chce uzyskać to co jest po backslashu. Jeśli założeniem jest, że backslash się nie powtórzy, a mam przeczucie, że nie, to przecież można to zrobić substringiem:

string data = @"centosso\jan.kowalski";
string name = data.Substring(data.IndexOf('\\') + 1);

//name = jan.kowalski
1

@AdamWox:

a po co zakładać, gdy można wziąć ostatni od końca? :P

string data = @"centosso\jan.kowalski";
var index = data.LastIndexOf(@"\", data.Length);
string name = data.Substring(index+1);
0

jeszcze przykładu z regexem brakuje

0
Julian_ napisał(a):

jeszcze przykładu z regexem brakuje

albo funkcyjnie

2

Można też skorzystać z najnowszych ficzerów, a nie jakieś starożytne substringi :D

var data = @"centosso\jan.kowalski";
var name = data.Split(@"\")[^1];
1
Julian_ napisał(a):

jeszcze przykładu z regexem brakuje


using System;
using System.Text.RegularExpressions;
					
public class Program
{
	public static void Main()
	{
		var examples = new string[] { "foo\\bar", "\\bar", "foo\\", "a\\b" };
		var regex = new Regex(@"^[^\\]*\\(?<id>.*)$");
		
		foreach (var example in examples) {
			var match = regex.Match(example);
			if (match.Success) {
				var id = match.Groups["id"].Value;
				Console.WriteLine("Example '{0}': extracted '{1}'", example, id);
			}
		}
	}
}

https://dotnetfiddle.net/QReeAp

1 użytkowników online, w tym zalogowanych: 0, gości: 1