1

我想在字符串中查找罗马数字(低于 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..

4

2 回答 2

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...
于 2013-04-05T10:21:41.440 回答
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();

输出:

在此处输入图像描述

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

于 2013-04-05T10:24:54.780 回答