基于罗马数字C#拆分字符串

时间:2013-04-05 09:55:47

标签: c#

我想在字符串中找到罗马数字(数字低于20就足够了)并根据罗马数字拆分字符串

例如:用户输入是:

Whats your name?i)My name is C# ii)My name is ROR iii)My Name is Java

我想做类似

的事情
Whats your name?
i)My name is C# 
ii)My name is ROR 
iii)My Name is Java

编辑:这是格式化可选问题。所以选项不会超过5或6 ..

2 个答案:

答案 0 :(得分:2)

此代码:

string input = "I. Some text. II. Some text... V. Some stupid text. XVII. Eshe kakaya-to hernya...";

Regex r = new Regex(@"\bx{0,3}(i{1,3}|i[vx]|vi{0,3})\b", RegexOptions.IgnoreCase);
string result = r.Replace(input, new MatchEvaluator(e => Environment.NewLine + e.Value)).Trim();

结果:

I. Some text. 
II. Some text... 
V. Some stupid text. 
XVII. Eshe kakaya-to hernya...

答案 1 :(得分:2)

Regex.Split(yourstring, @"(?=\b\w+\))")

应该做你想做的事。

示例:

var s = "Whats your name?i)My name is C# ii)My name is ROR iii)My Name is Java XX)foo ix)barv x)foobar";
Regex.Split(s, @"(?=\b\w+\))").Dump();

<强>输出:

enter image description here

请注意,您的文字中不能包含)。如果你愿意,你可以使用(?=\b[ivxIXV]+\))作为替代,但我认为你应该保持简单。