Столкнувшись с проблемами при выполнении строковых операций в C # - PullRequest
0 голосов
/ 28 февраля 2019

Я хотел бы сообщить всем, что я совершенно новичок в C # и объектно-ориентированном программировании.

Кроме того, кто-нибудь может показать мне другой способ решения вопроса?

Вопрос, который я попытался выполнить, таков:

Class Formatter

Formatter()

Форматирование строк выполненов конструкторе.

CapitalizeLetter(this string)

Этот метод использует буквы, введенные пользователем в соответствии с заданными условиями.Первая буква пропущенной строки должна быть заглавной.Если строка содержит пробел или точку остановки, следующая буква также должна быть заглавной.Все остальные буквы должны быть в нижнем регистре.

Например: ajaY malik.k

Выход: Аджай Малик.K Код, который я пытался сделать в классе Formatter, как указано:

public static class Formatter
{
    static Formatter()
    {

    }

    public static string CapitalizeLetter(this string value)
    {
        string output = null;
        string[] splittedProduct = value.Split(' ','.');
        foreach (String temp in splittedProduct)
        {
            output = output + " " + temp[0].ToString().ToUpper() + temp.Substring(1).ToLower();
        }
        output = output.Trim();
        return output;
    }

    public static string UrlEncode(this string input)
    {
        return input.Replace(" ", "%20");
    }
}

Мой вывод - только изменение первой буквы в строке.

Моя строка такова: интервьюер очень хороший. Технически сильный.

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

Вы заново изобретаете колесо.

MS уже объяснила, как

Ссылка выше показывает, как использовать TextInfo и получать подходящую для каждой строки заглавную строку в каждом слове... этот документ известен как регистр заголовков.

Короче говоря, он использует CultureInfo, TextInfo, а затем использует класс textinfo для получения

"this is a test" до "This Is A Test"

0 голосов
/ 28 февраля 2019

Если вы изучаете string с и, таким образом, из коробки ToTitleCase не вариант, будьте осторожны с string + string.

Объединение string s занимает много времени (особенно в цикле): каждый + создает новый string.Обычно мы используем StrignBuilder для построения строк.Таким образом, реализация Title Case может быть

public static string CapitalizeLetter(this string value) {
  // Do not forget to validate public methods' input
  if (string.IsNullOrEmpty(value))
    return value;

  // We know the size of string we want to build - value.Length 
  StringBuilder sb = new StringBuilder(value.Length);

  bool toUpper = true;

  foreach (var c in value) {
    char add = c;

    if (char.IsWhiteSpace(c) || c == '.')
      toUpper = true;
    else {
      if (char.IsLetter(c))
        add = toUpper ? char.ToUpper(c) : char.ToLower(c);

      toUpper = false;
    }

    sb.Append(add);
  }

  return sb.ToString();
}
0 голосов
/ 28 февраля 2019

Прописывает первую букву каждого слова в строке.

using System.Globalization;
string capitalized = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(“capitalizing the first letter of  some text”);

Здесь класс CultureInfo относится к System.Globalization namespace.Из этого класса вы можете получить информацию о практически всех возможных культурах, в том числе о широком диапазоне настроек, специфичных для данной культуры.

После выполнения заглавная строка будет иметь такое значение: «Заглавная буква некоторого текста».что именно то, что нам нужно, верно?

Предположим, что мы хотим установить текущую культуру Соединенных Штатов, тогда

TextInfo UsaTextInfo = new CultureInfo(“en-US”, false).TextInfo;
string capitalized = UsaTextInfo.ToTitleCase(“capitalizing the first letter of  some text”);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...