Soy nuevo en C# y solo sé lo básico. Estoy buscando un ejemplo de código sobre cómo obtendría cada dos palabras de una variable de cadena. Por ejemplo, si la variable fuera
String x = "Help me, coding is difficult";Me gustaría devolver una sola cadena "Ayuda con la codificación difícil". Debe ser una función que tome una cadena y devuelva una versión filtrada de la misma.
Alguien sugirió duplicados que en su mayoría ya había visto durante mi investigación:
string s = "You win some. You lose some."; string[] subs = s.Split(' '); for(int i=0 ; i < subs.length ; i+=2) { Console.WriteLine($"Substring: {sub[i]}"); }Primero debe definir qué son los delimitadores de palabras, solo un espacio, una coma, un punto o punto y coma o ¿qué más? Entonces puedes usar String.Split .
char[] wordDelimiter = new[] { ' ','\t', ',', '.', '!', '?', ';', ':', '/', '\\', '[', ']', '(', ')', '<', '>', '@', '"', '\'' }; String x = "Help me, coding is difficult"; string[] words = x.Split(wordDelimiter, StringSplitOptions.RemoveEmptyEntries); Ahora tienes una matriz con todas las palabras. Pero quiere uno al otro, puede llenarlos en una List<string> y usar un for-loop que se salta uno al otro:
var everyOtherWord = new List<string>(); for(int i = 0; i < words.Length; i += 2) { everyOtherWord.Add(words[i]); }Me gustaría devolver "Ayuda con la codificación difícil"
Entonces, ¿realmente quieres tener una string como resultado que contenga estas palabras separadas por espacios? Luego use String.Join (de alguna manera el método de contraparte de String.Split ):
string result = string.Join(" ", everyOtherWord);Suponiendo que cuenta una palabra como "cada carácter entre espacios, o el inicio/final de la cadena", y no está tratando de eliminar ninguna letra.
var input = "Help me, coding is difficult"; var everyOther = input .Split(' ') .Where((x, i) => i % 2 == 0); Console.WriteLine(string.Join(" ", everyOther)); El código para el Where fue tomado de esta publicación .
La idea es usar la sobrecarga de Where que le da el valor del índice y ver si ese valor del índice es par, si es así, inclúyalo en los resultados.