C#。在单词上分开标识符

时间:2012-07-31 06:44:33

标签: c# regex

我有一些识别器。例如:'basicHtmlConverter。'
我需要分享他的一些话:'基本的Html转换器'。
我认为使用Regex.Split有一些模式。

2 个答案:

答案 0 :(得分:0)

试试这个Regex

([a-z]+)([A-Z]?[a-z]*)+

你的代码应该是这样的:

var nameList = new List<string>();
var inputString = "canClearScene";
foreach (Capture capture in Regex.Matches(inputString, "(?<name>[a-z]+)(?<name>[A-Z]?[a-z]*)+")[0].Groups["name"].Captures)
{
    nameList.Add(capture.Value);
}

LINQ方式:

var nameList = (from Capture capture in Regex.Matches(inputString, "(?<name>[a-z]+)(?<name>[A-Z]?[a-z]*)+")[0].Groups["name"].Captures
                select capture.Value).ToList();

答案 1 :(得分:0)

不需要regexp:你只需要扫描一次字符串并LINQ完成任务。

yourString.Select(c => string.Format(Char.IsUpper(c) ? " {0}" : "{0}", c));

这将为您提供一个IEnumerable<string>对象,其中包含您需要的所有数据,这些数据可以满足您的需求:

string[] output = string.Split(" ", string.Join("", yourString.Select(c => string.Format(Char.IsUpper(c) ? " {0}" : "{0}", c)));

基本上,流程是这样的:

  • 插入所需的空间
  • 打包数据
  • 拆分令牌