2016-12-14 4 views
0

Ich habe ein kleines Problem in vb.net zu lösen, wo ich die Nummer des Auftretens der Nummer 1 in Zahlen 1762728381128911 zählen muss ich habe diese Lösungen, aber ich bin sicher, es gibt anspruchsvollere Weg zu tun Dies .Anzahl der Occurance in der Liste der Nummern

Public Function CheckOccurance() As Integer 
    Dim numbersList As New List(Of String) 
    numbersList.Add("1") 
    numbersList.Add("7") 
    numbersList.Add("6") 
    numbersList.Add("2") 
    numbersList.Add("7") 
    numbersList.Add("2") 
    numbersList.Add("8") 
    numbersList.Add("3") 
    numbersList.Add("8") 
    numbersList.Add("1") 
    numbersList.Add("1") 
    numbersList.Add("2") 
    numbersList.Add("8") 
    numbersList.Add("9") 
    numbersList.Add("1") 
    numbersList.Add("1") 
    Dim count As Integer = 0 
    For Each value In numbersList 
     If value.Equals("1") Then count += 1 
    Next 
    Return count 

End Function 
+0

C#: 'int count = "1762728381128911" .Count (c => c == '1'); 'nur ein * Linq * in der ursprünglichen Zeichenfolge. –

+0

Ich brauche das in vb.net – Usman

+0

Anstatt auf diese Weise zu Ihrer Liste hinzufügen, könnten Sie 'numbersList.AddRange ({" 1 "," 7 ", etc})' oder 'Neue Liste (Of String) From { "1", "7", etc} 'oder' Neue Liste (von String) ({"1", "7", etc}) ' –

Antwort

2

Sie nicht angeben, welcher Teil dieses Codes würden Sie ‚anspruchsvoller‘ machen möchten, aber Sie können Linq Werte zurückgeben verwenden

NB Sammlung machen muss asEnumerable() zu Erweiterungsmethode abholen, wenn Namen Zusammenstoß.

return numbersList.asEnumerable.Count(Function(v) v ="1") 

Denken Sie daran, Linq Namespace

imports System.Linq 

Auch, wie Dmitry Bychenko vorgeschlagen (wenn auch in C# Geschmack) zu importieren, können Sie dies tun ...

return "1762728381128911".Count(function(v) v = "1") 
+1

Siehe update. Es ist kein gutes Kopieren/Einfügen, ohne es zu verstehen. Ich schlage vor, Sie erforschen Linq. Sehen Sie hier [LINQ .NET] (https://msdn.microsoft.com/en-us/library/bb308959.aspx) –

+1

So wie es ist, wird dieser Code nicht funktionieren; 'v.Equals (" 1 ")' ruft die Überladung "Char.Equals (Object)" auf, die immer "false" zurückgibt, wenn arg kein "Char" ist und ein "String" kein "Char" ist '; Siehe [Fidel] (https://dotnetfiddle.net/ojCJTy). Auch in Bezug auf den letzten Teil ist 'String' eine" Sammlung "(es implementiert' IEnumerable (Of Char) ') – Sehnsucht

Verwandte Themen