2016-09-21 3 views
-3

Я хочу, чтобы разбить строку на основе символов и строки, как (,.;andorthoughbut и т.д.).
Оригинальная строка: "This movie is great. I like the story, acting is nice and direction is perfect but music is not good."
Результат:
This movie is great
I like the story
acting is nice
direction is perfect
music is not good
Разделить строку C#

Я попытался это.

string test = "This movie is great. I like the story, acting is nice and direction is perfect but music is not good."; 
var splittC = Regex.Split(test, ","); 
foreach(var a in splittC){ 
    var splittD = Regex.Split(test, "."); 
    foreach(var b in splittD){ 
     var splittA = Regex.Split(test, "and"); 
    } 
}// and so on.... 

Это занимает столько циклов.
И если в этой строке нет запятой, она не будет проверять другие символы. Как решить эти проблемы. Пожалуйста помоги.

+3

Возможный дубликат [разделение строки на основе нескольких разделителей символов] (http: // stackoverflow.com/questions/7605785/splitting-a-string-on-multiple-char-delimiters) – kape123

+1

есть [перегрузка строки.Split] (https://msdn.microsoft.com/en-us/library/tabh47cf (v = vs.110) .aspx), который сделает это для вас – Jonesopolis

+0

, вы можете разделить на все разделители. Я надеюсь, что вы знаете об этом без использования Regex, например, 'var splittC = test.Split (new [] { ',', '.'}, StringSplitOptions.RemoveEmptyEntires); ' – MethodMan

ответ

0

Для выполнения этой работы вам необходимо проанализировать предложение с помощью лексического анализатора, а затем обработать созданные объекты. Пример ключевых слов лексических элементов: «и», «» и т. Д. Остальная часть текста в анализируемых элементах между элементами ключевого слова затем может быть объединена и отправлена ​​на вывод.

1

String.Split разрешает параметр string[].

Попробуйте это:

string test = "This movie is great. I like the story, acting is nice and direction is perfect but music is not good."; 
var splitVals = test.Split(new string[] { ",", ".", ";", " and ", " or ", " though ", " but ", " etc. "}, StringSplitOptions.RemoveEmptyEntries); 
+0

Это разделит« историю »из-за' или ' –

+0

Нет, @LB - Подойди ближе, у тебя есть' или ' –

+0

Я сделал, это сработало –

0

попробуйте использовать это простое регулярное выражение я написал это может быть полезно для вас:

var [email protected]"\.|\,|\;|(?:\sand\s)|(?:\sor\s)|(?:\sthough\s)|(?:\sbut\s)"; 
var splittC = Regex.Split(test, splitRegex); 
... 

результатов есть: Split by regex может потребоваться некоторые модификации для работы в все ситуации.

0
string test = "This movie is great. I like the story, acting is nice and direction is perfect but music is not good."; 
var splitVals = test.Split(new string[] 
{ ",", ".", ";", " and ", " or ", 
    " though ", " but ", " etc. " 
},StringSplitOptions.RemoveEmptyEntries); 
1

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

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

iPhone отличные, сказал г-н Смит.

«Один и два, а три и четыре». пели музыканты.

Чтобы сделать работу хорошо, я рекомендую вам либо

(а) очень строго контролировать вход разрешен, или

(б) использовать библиотеку разбора естественного языка, такие как SharpNLP, который native, или вы можете вызвать NLTK из C#. NLTK, вероятно, лучший, но даже иногда он терпит неудачу. Он также имеет размер 5 ГБ из-за данных обучения, требуемых машинным обучением.

Смежные вопросы