Очистка строки в C # - PullRequest
       1

Очистка строки в C #

3 голосов
/ 30 июля 2010

Я пытаюсь написать функцию, которая в качестве ввода берет строку, содержащую слова, удаляет все односимвольные слова и возвращает новую строку без удаленных символов

Например:

string news = FunctionName("This is a test");
//'news' here should be "This is test".

Можете ли вы помочь?

Ответы [ 5 ]

6 голосов
/ 30 июля 2010

Обязательный однострочный LINQ:

string.Join(" ", "This is a test".Split(' ').Where(x => x.Length != 1).ToArray())

Или как более приятный метод расширения:

void Main()
{
    var output = "This is a test".WithoutSingleCharacterWords();
}

public static class StringExtensions
{
    public static string WithoutSingleCharacterWords(this string input)
    {
        var longerWords = input.Split(' ').Where(x => x.Length != 1).ToArray();
        return string.Join(" ", longerWords);
    }
}
3 голосов
/ 30 июля 2010

Я уверен, что с помощью регулярных выражений есть более хороший ответ, но вы можете сделать следующее:

string[] words = news.Split(' ');

StringBuilder builder = new StringBuilder();
foreach (string word in words)
{
    if (word.Length > 1)
    {
       if (builder.ToString().Length ==0)
       {
           builder.Append(word);
       }
       else
       {
           builder.Append(" " + word);
       }
    }
}

string result = builder.ToString();
2 голосов
/ 30 июля 2010

Интересным в этом вопросе является то, что, вероятно, вы также хотите удалить один пробелов, окружающих однобуквенное слово.

    string[] oldText = {"This is a test", "a test", "test a"};
    foreach (string s in oldText) {

        string newText = Regex.Replace(s, @"\s\w\b|\b\w\s", string.Empty);
        WL("'" + s + "' --> '" + newText + "'");
    }

Выходной ...

'This is a test' --> 'This is test'
'a test' --> 'test'
'test a' --> 'test'
0 голосов
/ 30 июля 2010
string str = "This is a test.";
var result = str.Split(' ').Where(s => s.Length > 1).Aggregate((s, next) => s + " " + next);

UPD

Использование метода расширения:

public static string RemoveSingleChars(this string str)
{
      return str.Split(' ').Where(s => s.Length > 1).Aggregate((s, next) => s + " " + next);       
}


//----------Usage----------//


var str = "This is a test.";
var result = str.RemoveSingleChars();
0 голосов
/ 30 июля 2010

С синтаксисом Linq вы можете сделать что-то вроде

return string.Join(' ', from string word in input.Split(' ') where word.Length > 1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...