Возникли проблемы с разделением, содержит, и если - PullRequest
1 голос
/ 30 октября 2019

Мне бы хотелось, чтобы результат был "WE ARE THE CHAMPIONS MY FRIEND" как 1 пробел между каждыми двумя словами. Поэтому я не хочу, чтобы мой код продолжался, если любая из строк содержит пробел в массиве input2, но он просто выполняет оператор if, даже если элемент является пробелом. Любая помощь будет оценена.

Спасибо

string input = "    WE ARE     THE    CHAMPIONS  MY  FRIEND";
string[] input2 = input.Split(' ');
string result = "";

foreach (var item in input2) {      
    if (!item.Contains(" "))
        result += item + " ";
}

Console.WriteLine(result);

1 Ответ

1 голос
/ 30 октября 2019

Подход 1: Один из подходов заключается в использовании замены вместо комбинации «Разделить», «Содержит» и, если это гораздо проще и дешевле.

using System;
using System.Text.RegularExpressions;

public class Program
{
    public static void Main()
    {
        // This is the input string we are replacing parts from.
        string input = "    WE ARE     THE    CHAMPIONS  MY  FRIEND";

        // Use Regex.Replace to replace the pattern in the input.
        string output = Regex.Replace(input, "\\s+", " ");

        // Write the output.
        Console.WriteLine(input);
        Console.WriteLine(output);
    }
}

Подход 2: Чтобы не отставать от исходного вопроса об использовании Split, Contains и if, метод Split принимает 3 параметра.

Параметры:

разделитель: Это символьный массив, который разделяет подстроки в этой строке, пустой массив, не содержащий разделителей, или нуль.

count: Это максимальное количество подстрок, которые нужно вернуть.

параметры: Параметр RemoveEmptyEntries для исключения пустых элементов массива из возвращаемого массива или параметр None для включения пустых элементов массива в возвращаемый массив.

public String[] Split(char[] separator, int count, StringSplitOptions options);

Следовательно после выполнениянеобходимые изменения, ваш окончательный код становится:

using System;

public class Program
{
    public static void Main()
    {
        string input="    WE ARE     THE    CHAMPIONS  MY  FRIEND";
        String[] spearator = {" "}; 
        String[] input2=input.Split(spearator, 1000, StringSplitOptions.RemoveEmptyEntries); 
        String result="";

    foreach(var item in input2) {
            result+=item+" ";
    }
    Console.WriteLine(result);
    }
}
...