我想计算特定字符串中的所有“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;
}
}
}
答案 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);
在这里,我们将字符串转换为全部小写,以便A
和a
一起计算。然后,我们使用简单的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();
}