使 lettercheck 不区分大小写

问题描述 投票:0回答:1

所以我需要让这段代码能够计算一个指定的字母(在这种情况下是字母E)。我已经把它做到了计算字母在句子中被输入的次数,但是它是区分大小写的。现在它只计算大写的E,这可以改变,但我不知道它怎么能同时读取大写和小写。

我找到了 equalsIgnoreCase() 代码,但是我对它不熟悉,所以我不知道该把它放在哪里,它是如何工作的,或者它是否会工作。在我的例子中,我尝试了 myString.equalsIgnoreCase(MyString2)在我看来 CharCountCharCountLow 我相信。

这是我的代码。

//Written sentence gets read by arduino when enter is pressed and printed into the serial monitor

//Arduino counts how many characters are in the sentence and prints out that number in serial monitor

//Arduino then counts how many times any chosen letter in the sentence is written, for example E, and then prints out that number on the monitor.

//Arduino then reads the sentence you've written and prints it backwards in serial monitor
char Message[128] = "";
char MessageInversed[128] = "";
static int CharCount;
char NextChar;
char CountChar = 'E';
char CountCharLow = 'e'; // this is what I've tried
int Counter;
boolean Done;

void setup()
{
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial.println("<Enter your text>");
}
void loop()
{
  Readmessage();
  Showmessage();
}
void Readmessage() 
{
  static int CharCount = 0;
  char EnterCheck = '\n';

  while (Serial.available() > 0 && Done == false)
  {
    NextChar = Serial.read();
    if (NextChar == CountChar || CountCharLow) // this is what I've tried
    {
      Counter++;
    }
    if (NextChar != EnterCheck)
    {
      Message[CharCount] = NextChar;
      CharCount++;
    }
    else
    {
      InverseMessage(CharCount);
      Message[CharCount-1] = '\0';
      CharCount=0;
      Done = true;
    }
  }
}
void InverseMessage(int Characters)
{
for (int InversedCharCount = 0; InversedCharCount < Characters-1; InversedCharCount++)
{   
    MessageInversed[Characters-2-InversedCharCount] = Message[InversedCharCount];
}
    MessageInversed[Characters] = '\0';
}
void Showmessage()
{
  if (Done == true)
  {
    Serial.print("Your message length is: ");
    Serial.println(strlen(Message));
    Serial.print("This is your message: ");
    Serial.println(Message);
    Serial.print("Your inversed message length is: ");
    Serial.println(strlen(MessageInversed));
    Serial.print("Your reversed message is: ");
    Serial.println(MessageInversed);
    if (Counter == 1)
      {
        Serial.print("The letter E has been typed ");
        Serial.print(Counter);
        Serial.println(" time");
      }
      else 
      {
        Serial.print("The letter E has been typed a total of ");
        Serial.print(Counter);
        Serial.println(" times");
      }
    Serial.print("<Please enter next text>");

    Done = false;
    Counter = 0;
  }
}
c++ arduino char case-insensitive
1个回答
0
投票

你需要检查NextChar是否是小写字母,所以应该可以通过输入。

if(NextChar == CountChar || NextChar == CountCharLow) {...}
© www.soinside.com 2019 - 2024. All rights reserved.