es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo imprimir la ubicación de una cadena y cómo reemplazar una cadena pero omitir algunas cadenas aplicando el lenguaje C a Arduino.

Ejemplo: “Tengo un bolígrafo. Tengo una piña. Uh…piña bolígrafo. bolígrafo piña manzana bolígrafo.”

Q1: Por favor, imprima la posición de la palabra bolígrafo en la oración de ejemplo. Aplicar lenguaje C a Arduino.

Q2: En la oración de ejemplo, todas las palabras “bolígrafo” son cambiadas por “manzana” [Nota]: No se incluye el bolígrafo de pineapplepen. Por favor, explique el código. Aplicar lenguaje C a Arduino.

Mi amigo lo hace con C#, pero no sé cómo hacerlo. Aplicar lenguaje C a Arduino.

// por C#
using System;
using System.Text.RegularExpressions;
class HelloWorld {
static void Main() {
var source = “Tengo un bolígrafo. Tengo una piña. Uh…piña bolígrafo. bolígrafo piña manzana bolígrafo.”;
String target= “bolígrafo”;
Regex regex= new Regex(“(^|[\s.,])(“+ target + “)(?=[\s.,])”);
foreach(Match match in regex.Matches(source)) {
Console.WriteLine(match.Index+match.Groups[1].Length);
}

    var result= regex.Replace(source,x=>x.Groups[1]+"manzana");

    Console.WriteLine(result);
    Console.ReadLine();

}
}

Tags:  ,

Answer

  1. Avatar for davy.ai

    Q1: Para imprimir la posición de la palabra “pen” en la oración de ejemplo utilizando el lenguaje C en Arduino, podemos usar un bucle for para iterar a través de la cadena y comparar cada subcadena con la palabra “pen”. Si se encuentra una coincidencia, podemos imprimir el índice de inicio de esa subcadena. Aquí tienes un ejemplo de código:

    void setup() {
        Serial.begin(9600);
    }
    
    void loop() {
        String sentence = "Tengo un bolígrafo. Tengo una piña. Uh... piña y bolígrafo. bolígrafo piña manzana bolígrafo.";
        String word = "bolígrafo";
        int wordLen = word.length();
        int sentenceLen = sentence.length();
    
        for (int i = 0; i < sentenceLen - wordLen + 1; i++) {
            if (sentence.substring(i, i + wordLen) == word) {
                Serial.println(i);
            }
        }
        while(1); // detener Arduino de hacer loop
    }
    

    Esto imprimirá las posiciones de “bolígrafo” en la oración: 8, 27 y 42.

    Q2: Para reemplazar todas las palabras “bolígrafo” por “manzana” en la oración, excepto la que está en “piña y bolígrafo”, podemos utilizar un bucle for similar y una declaración if para verificar si la palabra está dentro de “piña y bolígrafo”. Aquí tienes un ejemplo de código:

    void setup() {
        Serial.begin(9600);
    }
    
    void loop() {
        String sentence = "Tengo un bolígrafo. Tengo una piña. Uh... piña y bolígrafo. bolígrafo piña manzana bolígrafo.";
        String word = "bolígrafo";
        String replaceWord = "manzana";
        String targetWord = "piña y bolígrafo";
        int wordLen = word.length();
        int sentenceLen = sentence.length();
        bool insideTarget = false; // bandera para verificar si está dentro de la palabra objetivo
    
        for (int i = 0; i < sentenceLen - wordLen + 1; i++) {
            if (sentence.substring(i, i + wordLen) == word) {
                // verificar si está dentro de la palabra objetivo
                if (i >= targetWord.indexOf(word) && i < targetWord.indexOf(word) + wordLen) {
                    insideTarget = true;
                } else {
                    insideTarget = false;
                    sentence.replace(i, i + wordLen, replaceWord);
                }
            }
        }
        Serial.println(sentence);
        while(1); // detener Arduino de hacer loop
    }
    

    Esto imprimirá la oración modificada con “bolígrafo” reemplazado por “manzana”, excepto la que está dentro de “piña y bolígrafo”: “Tengo una manzana. Tengo una piña. Uh… piña y bolígrafo. manzana piña manzana manzana.”

Comments are closed.