列出字符串中的所有“A”

时间:2015-01-08 12:38:32

标签: c# string

我想计算特定字符串中的所有“A”。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace TESTING
{
    class Testing
    {
        static void Main(string[] args)
        {
            //ask user for the filename
            string userInput = fetchFileName("Enter the textfile you want to view: ");

            //test if the filename writes anything to console
            string fileContents = File.ReadAllText(userInput);

            string theFileContents = analyseFile(fileContents);
         //   Console.WriteLine(theFileContents);
            Console.ReadLine();

       }

        private static string analyseFile(string fileContents)
        {
            string str = fileContents;
            if (str.Contains("A"))                
            {
               Console.WriteLine("YES");

            }
            else
            {
                Console.WriteLine("NO");
            }
            return str;
        }

        private static string fetchFileName(string askFileName)
        {
            Console.WriteLine(askFileName);
            string userAnswer = Console.ReadLine();
            return userAnswer;
        }
    }
}

8 个答案:

答案 0 :(得分:2)

看看LINQ。它允许对任何类型的集合执行所有操作。字符串是字符集合。下面举例说明LINQ如何让您的生活更轻松:

string text = "A sdfsf a A sdfsf AAS sdfA";
int res = text.Count(letter => letter == 'A');

这里发生的是你取text并提供一个谓词,表示你想从字符串中取任何变量letter,使letter等于char {{1} }}。然后你想要数数。

答案 1 :(得分:1)

最简单的方法之一是迭代文件中的所有字符,并检查字母是否等于您想要的字母。

当你意识到一个字符串只不过是一个字符数组时,你可以这样做:

public int LetterCount(string filename, char letter)
{
    int cnt = 0;
    string source = File.ReadAllText(filename);
    //Check every character in your string; if it matches increase the counter by 1
    foreach (char c in source)
    {
        if(c == letter)
        {
            cnt++;
        }
    }
    return cnt;
}

并像这样使用它:

int A_count = LetterCount(@"C:\test.txt", 'A');

请注意,如果文件确实存在,则此代码不会检查。如果您输错了路径,最终会得到FileNotFoundException

答案 2 :(得分:1)

Foreach只是另一种循环。这可以通过for循环轻松完成。诀窍是将字符串拆分为以后可以比较的单个字符。

如果我只是让你走上正确的道路,我相信你会弄明白如何实现这个目标:

string test = "My name is Isak";
char[] arrayOfChars = test.ToCharArray();
int count = 0;

for (int i = 0; i < arrayOfChars.Length; i++)
{
     if (arrayOfChars[i] == 'a' || arrayOfChars[i] == 'A')
     {
          count++;
     }
}

答案 3 :(得分:0)

你可以使用linq

string text = "The quick brown fox jumps over the lazy dog";
var count = text.ToLower().Where(x => x == 'a').Count();
Console.WriteLine(count);

但如果您不能使用任何高级技术,您可以这样做:

string text = "The quick brown fox jumps over the lazy dog";
int counter = 0;
for (int i = 0; i < text.Count(); i++)
{
    if (text[i] == 'a' || text[i] == 'A')
    {
        counter++;
    }
}
Console.WriteLine(counter);

答案 4 :(得分:0)

尝试简单

    string test = "ABBCDABNDEAA";

    int Count = test.Count(x => x == 'A');

答案 5 :(得分:0)

使用LINQ,这可以非常简单:

string myString = "ababsgsdfsaaaAA22bbaa";

var count = myString.ToLower().Count(c => c == 'a');

Console.Write(count);

在这里,我们将字符串转换为全部小写,以便Aa一起计算。然后,我们使用简单的LINQ方法Count()来计算a个字符的数量。

答案 6 :(得分:0)

你可以这样做:

        string stringValue = "Addsadsd AAf,,werAA";

        int qtdChar = stringValue.Count(x => x == 'A');
        int qtdCharInsensitive = stringValue.Count(x => x == 'A' || x=='a');

答案 7 :(得分:-1)

如果您不想使用foreach,可以删除所有字母A并比较长度差异 有点像这样:

private static string analyseFile(string fileContents)
    {
        var strippedString = fileContents.Replace("A","");
        var count = fileContents.Length - strippedString.Length;

        return count.ToString();
    }