9 harflik bir dizim var.C# dize işleme
string myString = "123987898";
ben ilk 3 harf "123" almak isteyen sonra 2 daha harfleri "98" ve ardından 4 harfleri "7898".
Bu C# string işlevi bu işlevi desteklemektedir.
9 harflik bir dizim var.C# dize işleme
string myString = "123987898";
ben ilk 3 harf "123" almak isteyen sonra 2 daha harfleri "98" ve ardından 4 harfleri "7898".
Bu C# string işlevi bu işlevi desteklemektedir.
Sen Substring kullanabilirsiniz:
Ayrıca mümkündürmyString.Substring(0,3)
myString.Substring(3,2)
myString.Substring(5,4)
gerekli olandan daha karmaşık hale getirmek için düzenli ifadeler ve LINQ bir arada kullanarak:
string myString = "123987898";
Regex regex = new Regex("(.{3})(.{2})(.{4})");
string[] bits = regex
.Match(myString)
.Groups
.Cast<Group>()
.Skip(1)
.Select(match => match.Value)
.ToArray();
+1. Basit tutmayı severim. İkinci kısım, kavramın düzgün bir kanıtıdır, ancak üretim kodunda gördüğümde bunu yeniden düzenlerdim. –
baş etmenin en iyi ve sağlam yolu Bununla bir regex
kullanmak mümkündür. Match
Mesela
Match m = MyRegex.Match("123987898"); if (m.Success){ int first3 = int.Parse(m.Groups["first3"].Value; int next2 = int.Parse(m.Groups["next2"].Value; int last4 = int.Parse(m.Groups["last4"].Value; /* Do whatever you have to do with first3, next2 and last 4! */ }
inşa şey yoktur ait Groups
özelliği üzerinden Dışı Erişim ama kendiniz yapmak için yeterli kolaydır.
public static IEnumerable<string> SplitBySize(string value, IEnumerable<int> sizes)
{
if (value == null) throw new ArgumentNullException("value");
if (sizes == null) throw new ArgumentNullException("sizes");
var length = value.Length;
var currentIndex = 0;
foreach (var size in sizes)
{
var nextIndex = currentIndex + size;
if (nextIndex > length)
{
throw new ArgumentException("The sum of the sizes specified is larger than the length of the value specified.", "sizes");
}
yield return value.Substring(currentIndex, size);
currentIndex = nextIndex;
}
}
Örnek Kullanım
foreach (var item in SplitBySize("1234567890", new[] { 2, 3, 5 }))
{
Console.WriteLine(item);
}
Console.ReadKey();
ödev gibi görünüyor? – Kerido
@Kerido - bir sosyal güvenlik numarasının parçalarını ayırmak için büyük olasılıkla gereklidir, bu mutlaka ev ödevi demek değildir :) –
Hala ödev gibi geliyor. Yine de kötü bir şey değil. Sadece böyle etiketle. İlk parça için –