如何正确地将字符串转换为单词和标点符号列表?

时间:2015-02-18 06:27:33

标签: c# string

我有字符串:IDLIST, ID NAME;。并且需要将其转换为列表:{"IDLIST", ",", "ID", "NAME", ";"}

很明显如何用自由空间切割字符串,但是如何处理标点符号?

单词可以是任何字母集。标点符号也可以是任何标记符号。

1 个答案:

答案 0 :(得分:7)

您可以使用Regex.Split功能,如下所示,

string value = "IDLIST, ID NAME;";
string[] lines = Regex.Split(value, @"\s+|(?!^)(?=\p{P})|(?<=\p{P})(?!$)");
foreach (string line in lines) {
Console.WriteLine(line);

DEMO

您可以匹配所有标点符号或字母表,然后将匹配的字符串附加到列表中。

@"\p{P}|\p{L}+"

DEMO

\p{P}匹配任何类型的标点符号,p{L}匹配任何语言的任何类型的字母。