Dado cualquier carácter de la a la z, ¿cuál es la forma más eficiente de obtener la siguiente letra del alfabeto con PHP?Manera más eficiente de obtener la siguiente letra del alfabeto usando PHP
Respuesta
La forma más eficiente de hacer esto en mi opinión es simplemente incrementar la variable de cadena.
$str = 'a';
echo ++$str; // prints 'b'
$str = 'z';
echo ++$str; // prints 'aa'
Como se ve incrementando 'z'
dar 'aa'
si usted no quiere esto, pero en vez desee restablecer para obtener una 'a'
simplemente puede comprobar la longitud de la cadena resultante y si su >1
restablecerla.
$ch = 'a';
$next_ch = ++$ch;
if (strlen($next_ch) > 1) { // if you go beyond z or Z reset to a or A
$next_ch = $next_ch[0];
}
Bueno, depende qué es exactamente lo que quiere hacer con las "cajas de borde". ¿Qué resultado espera cuando el personaje es z
o Z
? ¿Desea la próxima letra del mismo caso, o solo la próxima letra, punto?
Sin saber la respuesta a eso, para el caso muy básico, sólo puede hacer esto:
$next_character = chr(ord($current_character) + 1);
Pero cuando estás en Z
esto le dará [
, y z
le dará {
, de acuerdo con los valores ASCII.
Editado según comentario:
Si necesita el siguiente carácter del mismo caso, es probable que pueda simplemente añadir controles simples después de la línea anterior:
if ($next_character == '[')
$next_character = 'A';
else if ($next_character == '{')
$next_character = 'a';
Son operaciones muy simples, realmente no me preocuparía la eficiencia en un caso como este.
Quiero la siguiente letra con la misma caja. Si el personaje es 'z', espero' a'. –
¿No sería más rápido simplemente devolver 'A' o' a' inmediatamente cuando el caracter es 'Z' o' z'? –
depende de lo que quiere hacer cuando se pulse Z, pero hay algunas opciones:
$nextChar = chr(ord($currChar) + 1); // "a" -> "b", "z" -> "{"
También se puede hacer uso de la función de PHP range()
:
$chars = range('a', 'z'); // ['a', 'b', 'c', 'd', ...]
¿Qué tal utilizando ord() and chr()?
<?php
$next = chr(ord($prev)+1);
?>
Puesto que sólo se preocupan por los caracteres en minúsculas en este caso, voy a utilizar el siguiente código, basado en las respuestas publicadas aquí:
function nextLetter(&$str) {
$str = ('z' === $str ? 'a' : ++$str);
}
Gracias por la ayuda, chicos!
$val = 'z';
echo chr((((ord($val) - 97) + 1) % 26) + 97);
agradable y fácil :-)
y para 'Z' es '$ next = chr ((((ord ($ c) - 65) + 1)% 26) + 65); 'ie ord ('A') – loretoparisi
crear una matriz de todas las letras, de la búsqueda de la carta existente y volver a su letra siguiente. Si llega a la última letra, devuelva la primera letra.
- 1. Cómo obtener la letra n-ésima del alfabeto
- 2. ¿La manera más eficiente de obtener varios hashes en Redis?
- 3. ¿La manera más eficiente de crear miniaturas?
- 4. ¿Cómo puedo incrementar una variable a la letra siguiente o anterior en el alfabeto?
- 5. ¿Hay alguna manera fácil de obtener programáticamente el alfabeto?
- 6. xsl iterar por la lista del alfabeto
- 7. ¿La manera más eficiente de indexar una matriz devuelta?
- 8. ¿Cómo paso a la siguiente letra mayúscula?
- 9. ¿Existe alguna manera más eficiente de obtener un método anotado?
- 10. manera más eficiente para extraer componentes de la dirección
- 11. Javascript: Averiguar la letra anterior en el alfabeto
- 12. manera más eficiente de extraer una cadena
- 13. ¿Cómo podría imprimir la enésima letra del alfabeto en Python? no parece
- 14. La manera más eficiente de hacer un registro de actividad
- 15. Encuentra de manera eficiente la siguiente fila de la tabla visible con jQuery
- 16. Manera más eficiente de monitorear una cola
- 17. ¿La manera más eficiente de nombrar un avatar de usuario?
- 18. Android cargando imágenes al servidor de la manera más eficiente
- 19. Manera eficiente de resolver Cryptarithms
- 20. Scripting HTTP de manera más eficiente
- 21. ¿La manera más eficiente de dibujar objetos idénticos múltiples?
- 22. ¿Cómo verificar la matriz idéntica de la manera más eficiente?
- 23. C#: ¿obtener letras del alfabeto para el idioma escandinavo?
- 24. ¿La manera más eficiente de contar las ocurrencias?
- 25. matriz de alfabeto limpiador en php
- 26. La manera más eficiente de invertir una matriz numpy
- 27. La manera más eficiente de convertir BCD a binario
- 28. Manera más eficiente para obtener una fila de datos de la base de datos en ASP.NET
- 29. ¿La manera más eficiente de almacenar URLs en Mysql?
- 30. Haciendo clic en la tecla 'Siguiente' del teclado usando UIAutomation
@Mathias hubo un pequeño error al mezclar el aumento previo y posterior. Cámbielo a '$ b = ++ $ a;' – nickf
@Mathias: Mi mal ... debe usar el preincremento como: '$ b = ++ $ a;' @nickf: Gracias :) – codaddict
Su el código de muestra es incorrecto '$ next_ch = $ ch ++;' no almacenará el valor incrementado en '$ next_ch', pero * will * de hecho incrementará' $ ch'. Me confundió allí por un segundo :) Un gran consejo, no sabía que esto fuera posible. ¡Definitivamente la forma más eficiente de hacerlo! –