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.

¿Qué se queda después de convertir un punto (.) en interrogación (?)?

Tengo un código que convierte (.) en (?), pero quiero desplazarlo un lugar a la izquierda después de convertir el punto (.), si escribimos [abcdef .] debería convertirse en [abcdef?] después de presionar la tecla de punto que elimina un espacio en el lado izquierdo, si escribimos [abcdef.] debería convertirse en [abcde?] después de presionar la tecla de punto que elimina el carácter más cercano en el lado izquierdo.

<!doctype html>
<html dir='ltr' lang='en-GB'>

<head>
  <meta charset="UTF-8">
  <title>test page</title>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>

  <script language="javascript" type="text/javascript">


  $(function() {
  $('textarea').on("keyup", function(e) {
    if (e.key === '.') {
      const index = this.selectionStart;
      const text = $(this).val();
      if (index > 0 && text.charAt(index - 1) === '.') {
        $(this).val(text.substr(0, index - 1) + '?' + text.substr(index));
        this.selectionStart = index;
        this.selectionEnd = index;
      }
    }
  });
});
  </script>
</head>

<body>
  <textarea></textarea>
</body>

</html>
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para desplazar la salida un lugar a la izquierda después de convertir “.” en “?”, necesitas modificar el código dentro de la declaración “if” que verifica la pulsación de la tecla “.”. Dentro de esa declaración “if”, puedes verificar si el carácter a la izquierda del punto es un espacio o un carácter normal. Si es un espacio, reemplaza el espacio con “?”, y elimina el carácter a la izquierda del espacio. Si es un carácter normal, reemplaza ese carácter con “?”, y elimina el punto.

    Aquí está el código actualizado:

    $(function() {
      $('textarea').on("keyup", function(e) {
        if (e.key === '.') {
          const index = this.selectionStart;
          const text = $(this).val();
          if (index > 0) {
            if (text.charAt(index - 1) === ' ') {
              $(this).val(text.substr(0, index - 2) + '?' + text.substr(index));
              this.selectionStart = index - 1;
              this.selectionEnd = index - 1;
            } else {
              $(this).val(text.substr(0, index - 1) + '?' + text.substr(index));
              this.selectionStart = index - 1;
              this.selectionEnd = index - 1;
            }
          }
        }
      });
    });
    

    Con este código, si escribes [abcdef .], la salida será [abcdef?]. Si luego presionas nuevamente la tecla de punto, la salida será [abcde?].

Comments are closed.