C#, NET 3.5C# içinde bir dizgiyi ayrıştırma; daha temiz bir yol var mı?
Bu sadece bana çirkin kokuyor, ama başka bir şekilde düşünemiyorum.
"Joe Smith (jsmith)" (sans quotes) biçimindeki bir dize verildiğinde, yalnızca parantez içindeki "jsmith" dizesini ayrıştırmak istiyorum. RegEx'in benim (me) sağlıklı kaçınma daha
private static string DecipherUserName(string user)
{
if(!user.Contains("("))
return user;
int start = user.IndexOf("(");
return user.Substring(start).Replace("(", string.Empty).Replace(")", string.Empty);
}
Diğer, alt dizeyi ayrıştırmak için daha basit bir yolu var
: Ben bu ile geldim?Düzenleme: "Joe Smith (gozdemir)" (sans tırnak): dize her zaman olacaktır ayrıştırmak için, netleştirmek için. IndexOf işlevi dönecektir beri değeri yok olduğunda
Not: Refactor'u, uzun vadede hissettiğim gibi sağlanan RegEx çözümü üzerinden Pax tarafından kabul ettim, bu daha RegEx'de daha fazla ustalaşana kadar daha sürdürülebilir olacaktır. Bu ve 1000 isimlerinden oluşan hızlı bir test, .0167195 ms'de Dize çözümünde .0077423 ms'de RegEx çözümüne sahipti. –
Basit bir metin eşleşmesi için, RE'ler genellikle daha yavaştır (bir döngüde ekstra hız için bir kez derlenebilmelerine rağmen). Gerçek avantajları, daha karmaşık durumlar için (örneğin, parantez içindeki boşluklara izin verme ve çıkarma) kendi ifadeleriyle ortaya çıkmaktadır. Çok fazla öğrenmeye değer, o yüzden devam et. – paxdiablo