c # Сплит предложение - PullRequest
       1

c # Сплит предложение

1 голос
/ 24 февраля 2011

Можно ли разделить это объединенное слово на два?Например: от «Имя» до «Имя» «Имя»

У меня есть несколько свойств, например FirstName, LastName и т. д., и мне нужно отобразить это на моей странице.Вот почему мне нужно разделить это имя свойства для более подходящего отображения.

Ответы [ 4 ]

1 голос
/ 24 февраля 2011

Ваша цель нечеткая.
Если свойства всегда имеют заглавную букву, вы можете найти позиции всех заглавных букв в слове и разделить их на эти позиции.
Если заглавные буквы не гарантированы, лучшим способом было бы создать таблицу преобразования. Таблица будет определять пары начального имени свойства и результирующего текста. Таким образом, у вас будет простая карта для трансформации

1 голос
/ 24 февраля 2011

Редактировать: ОП указал, что ему нужно разделить имена свойств

Если вы соблюдаете соглашение о присвоении имен CamelCase для свойств (т. Е. «FirstName» вместо «Firstname»), вы можете довольно легко разделить слова на символы в верхнем регистре.

string[] SplitByCaps(string input)
{
    StringBuilder output = new StringBuilder();
    for (int i = 0; i < input.Length; i++)
    {
        char c = input[i];
        if (i > 0 && Char.IsUpper(c))
            output.Append(' ');

        output.Append(c);
    }
    return output.ToString().Split(' ');         
}

Порядковый ответ:

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

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

Любая программа, которая могла бы достичь этого, должна была бы знать все слова на английском языке (давайте даже не будем рассматривать мультиязычные решения). Вам также потребуется интеллектуальный лексический синтаксический анализатор, потому что для любого слова может быть несколько способов его разбить.

Я предлагаю вам поискать другой способ решения вашей конкретной проблемы.

0 голосов
/ 24 февраля 2011

Вы можете использовать подстрока , чтобы получить первые 5 символов из строки.Затем замените первые пять символов в исходной строке на пустые.

string str = "Firstname";
string firstPart = str.Substring(0,5); // "First"
string secondPart = str.replace(firstPart,""); // "name"

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

0 голосов
/ 24 февраля 2011

Если у вас нет словаря всех «одиночных» слов, единственное решение, которое я могу придумать, это разбить на верхние буквы:

Имя -> Имя

Проблема все еще будет существовать для UIFilter -> UI Filter.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...