我想在字符串中找到罗马数字(数字低于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 ..
答案 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();
<强>输出:强>
请注意,您的文字中不能包含)
。如果你愿意,你可以使用(?=\b[ivxIXV]+\))
作为替代,但我认为你应该保持简单。