c# - superheroes - ¿Cómo verificar si una palabra comienza con un personaje dado?
superheroes por orden alfabetico (6)
Para devolver el primer caracter en una cadena, use:
Word.Substring(0,1) //where word is a string
Tengo una lista de elementos de Sharepoint: cada elemento tiene un título, una descripción y un tipo. Lo recuperé con éxito, lo llamé result
. Primero quiero verificar si hay algún elemento en el result
que comience con A, luego B, luego C, etc. Tendré que hacer lo mismo para cada carácter del alfabeto y luego, si encuentro una palabra que comience con este carácter, tendré que mostrar el personaje en negrita
Inicialmente, muestro los caracteres usando esta función:
private string generateHeaderScripts(char currentChar)
{
string headerScriptHtml = "$(document).ready(function() {" +
"$(/"#myTable" + currentChar.ToString() + "/") " +
".tablesorter({widthFixed: true, widgets: [''zebra'']})" +
".tablesorterPager({container: $(/"#pager" + currentChar.ToString() +"/")}); " +
"});";
return headerScriptHtml;
}
¿Cómo puedo verificar si una palabra comienza con un personaje dado?
Para verificar un valor, use:
string word = "Aword";
if (word.StartsWith("A"))
{
// do something
}
Puede hacer un pequeño método de extensión para pasar una lista con A, B y C
public static bool StartsWithAny(this string source, IEnumerable<string> strings)
{
foreach (var valueToCheck in strings)
{
if (source.StartsWith(valueToCheck))
{
return true;
}
}
return false;
}
if (word.StartsWithAny(new List<string>() { "A", "B", "C" }))
{
// do something
}
Y como una ventaja, si quiere saber con qué comienza su cadena, de una lista, y haga algo basado en ese valor:
public static bool StartsWithAny(this string source, IEnumerable<string> strings, out string startsWithValue)
{
startsWithValue = null;
foreach (var valueToCheck in strings)
{
if (source.StartsWith(valueToCheck))
{
startsWithValue = valueToCheck;
return true;
}
}
return false;
}
Uso:
string word = "AWord";
string startsWithValue;
if (word.StartsWithAny(new List<string>() { "a", "b", "c" }, out startsWithValue))
{
switch (startsWithValue)
{
case "A":
// Do Something
break;
// etc.
}
}
Podría hacer algo como esto para buscar un personaje específico.
public bool StartsWith(string value, string currentChar) {
return value.StartsWith(currentChar, true, null);
}
El método StartsWith tiene una opción para ignorar el caso. El tercer parámetro es establecer la cultura. Si es nulo, solo usa la cultura actual. Con este método, puede recorrer sus palabras, ejecutar la verificación y procesar la palabra para resaltar ese primer carácter según sea necesario.
Podría implementar expresiones regulares . Son bastante potentes, pero cuando diseñas tu expresión, en realidad logrará una tarea para ti.
Por ejemplo, encontrar un número, letra, palabra, etc. es bastante expresivo y flexible.
Ellos tienen un gran tutorial sobre ellos aquí :
Un ejemplo de tal expresión sería:
string input = "Some additional string to compare against.";
Match match = Regex.Match(input, @"/ba/w*/b", RegexOptions.IgnoreCase);
Eso encontraría todos los artículos que comienzan con una "a" sin importar el caso. Incluso puede utilizar Lambda y Linq para que fluyan aún mejor.
Espero que eso ayude.
Pruebe lo siguiente a continuación. Puede hacer StartsWith o Substring 0,1 (primera letra)
if (Word.Substring(0,1) == "A") {
}
Suponiendo que las propiedades que está comprobando son tipos de cadenas, puede usar el método String.StartsWith () . Por ejemplo:
if(item.Title.StartsWith("A"))
{
//do whatever
}
Enjuague y repita