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

Inf*_*eus 1 c# string

我有字符串:IDLIST, ID NAME;.需要把它变成列表:{"IDLIST", ",", "ID", "NAME", ";"}.

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

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

Avi*_*Raj 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);
Run Code Online (Sandbox Code Playgroud)

DEMO

要么

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

@"\p{P}|\p{L}+"
Run Code Online (Sandbox Code Playgroud)

DEMO

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