-
Notifications
You must be signed in to change notification settings - Fork 6k
Closed
Labels
⌚ Not TriagedNot triagedNot triageddotnet-fundamentals/svcin-prThis issue will be closed (fixed) by an active pull request.This issue will be closed (fixed) by an active pull request.
Description
Type of issue
Code doesn't work
Description
In the current documentation, there's a code sample that doesn't work as intended. The issue is in the following method:
private static Dictionary<string, int> CountWords(ReadOnlySpan<char> input)
{
Dictionary<string, int> wordCounts = new(StringComparer.OrdinalIgnoreCase);
Dictionary<string, int>.AlternateLookup<ReadOnlySpan<char>> spanLookup =
wordCounts.GetAlternateLookup<ReadOnlySpan<char>>();
foreach (Range wordRange in Regex.EnumerateSplits(input, @"\b\w+\b"))
{
ReadOnlySpan<char> word = input[wordRange];
spanLookup[word] = spanLookup.TryGetValue(word, out int count) ? count + 1 : 1;
}
return wordCounts;
}
The problem is that Regex.EnumerateSplits
is used to iterate over the input, but this method enumerates the separators between words, not the words themselves.
I believe the correct implementation should use Regex.EnumerateMatches
instead, like this:
static Dictionary<string, int> CountWords(ReadOnlySpan<char> input)
{
Dictionary<string, int> wordCounts = new(StringComparer.OrdinalIgnoreCase);
Dictionary<string, int>.AlternateLookup<ReadOnlySpan<char>> spanLookup =
wordCounts.GetAlternateLookup<ReadOnlySpan<char>>();
foreach (ValueMatch match in Regex.EnumerateMatches(input, @"\b\w+\b"))
{
Range wordRange = match.Index..(match.Index + match.Length);
ReadOnlySpan<char> word = input[wordRange];
spanLookup[word] = spanLookup.TryGetValue(word, out int count) ? count + 1 : 1;
}
return wordCounts;
}
This change ensures that the method correctly iterates over the words in the input, rather than the spaces between them.
Page URL
Content source URL
https://github.com/dotnet/docs/blob/main/docs/core/whats-new/dotnet-9/libraries.md
Document Version Independent Id
0c8c7059-86a1-e5df-32e6-fae6fdc5cae0
Article author
Metadata
- ID: 7c184200-3411-aa5b-ba3f-0b4a3ce0f589
- Service: dotnet-fundamentals
wakasanchi and gewarren
Metadata
Metadata
Assignees
Labels
⌚ Not TriagedNot triagedNot triageddotnet-fundamentals/svcin-prThis issue will be closed (fixed) by an active pull request.This issue will be closed (fixed) by an active pull request.