Технически, если вы хотите разделить на пунктуацию , я предлагаю Regex.Split
вместо string.Split
using System.Text.RegularExpressions;
...
string text =
@"Text with punctuation: comma, full stop. Apostroph's and ""quotation?"" - ! Yes!";
var result = Regex.Split(text, @"\p{P}");
Console.Write(string.Join(Environment.NewLine, result));
Результат:
Text with punctuation # Space is not a punctuation, 3 words combined
comma
full stop
Apostroph # apostroph ' is a punctuation, split as required
s and
quotation
Yes
если вы хотите добавить некоторые элементы, я предлагаю Linq Concat()
и .ToArray()
:
string text =
string[] words = Regex
.Split(text, @"\p{P}")
.Concat(new string[] {"addThis"})
.ToArray();
Однако, похоже, вы хотите Извлечь слова , а не Разделить на пунктуацию , что вы можете сделать, сопоставляя эти слова:
using System.Linq;
using System.Text.RegularExpressions;
...
string text =
@"Text with punctuation: comma, full stop. Apostroph's and ""quotation?"" - ! Yes!";
string[] words = Regex
.Matches(text, @"[\p{L}']+") // Let word be one or more letters or apostrophs
.Cast<Match>()
.Select(match => match.Value)
.Concat(new string[] { "addThis"})
.ToArray();
Console.Write(string.Join(Environment.NewLine, result));
Результат:
Text
with
punctuation
comma
full
stop
Apostroph's
and
quotation
Yes
addThis