【问题标题】:Number of occurrences of a character in a string and their positions字符串中某个字符的出现次数及其位置
【发布时间】:2013-12-06 14:44:54
【问题描述】:
Console.WriteLine("Insert the character you are searching for: ");
CharacterSearch = Console.ReadLine();
var count = file.Where(x => x == CharacterSearch).Count();

所以我要做的是从变量file 中读取文本,然后在从键盘输入的字符串中搜索特定字符。所以搜索到的字符是CharacterSearch

我还想检查他们的位置,而不仅仅是出现的次数。

【问题讨论】:

  • 忘了说这不显示分隔符的数量,因为我收到错误“运算符 == 不能用于字符串或字符”。
  • 您可以(并且应该)编辑您的问题。
  • 只需从输入字符串中获取第一个字符,或者使用 ReadKey 而不是 ReadLine

标签: c# string search


【解决方案1】:

为什么不简单地使用这种方法? (您是在寻找复杂的吗?)

List<int> indexes = new List<int>();

for (int i = 0; i < file.Length; i++)
{
    if (file[i]==CharacterSearch)
    {
        indexes.Add(i);    
    }
}

int count = indexes.Count;

【讨论】:

  • file[i] == CharacterSearch 行与我之前遇到的相同错误 == 不能用于 Char 和 String
  • @user2524603 因为你需要char CharacterSearch = Console.ReadKey().KeyChar;
【解决方案2】:

这是非常低效,但它是一个选项是文件小。

CharacterSearch = Console.ReadKey();
var count = File.ReadLines(pathToFile)
    .Select((c, i) => new { Character = c, Index = i })
    .ToList()
    .Where(x => x.Character == CharacterSearch);

【讨论】:

  • 我得到错误 Char 不包含 KeyChar 的定义
  • 现在我收到错误消息:System.IO.StreamReader 不包含 select 的定义。请记住,我正在尝试搜索文本文件。:(
  • @user2524603,请查看我的编辑,并删除 StreamReader
  • 现在我没有收到任何错误,但程序在此之后什么也不做。
  • 这是文件代码!可能与它有关。 Console.WriteLine(额外);整数计数器 = 0;字符串线; System.IO.StreamReader 文件 = 新 System.IO.StreamReader(PathS); while ((line = file.ReadLine()) != null) { Console.WriteLine(line);计数器++; }
【解决方案3】:

效率低,但文件较小时可以应用。

public static int CharCount(string input,char c)
{
    var charCount=input.GroupBy(a => a).ToDictionary(k => k.Key, v => v.Count());
    if (charCount.ContainsKey(c))
        return charCount[c];
    return 0;
}

如果你想在同一个字符串中进行搜索,我认为最好维护一个映射。再次仅对小文件相当大。

 public static Dictionary<char, int> CharCountMapping(string input)
{
    return input.GroupBy(a => a).ToDictionary(k => k.Key, v => v.Count());
}

【讨论】:

    猜你喜欢
    • 2017-10-09
    • 2010-11-12
    • 2013-12-25
    • 2018-01-06
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多