我想在字符串中查找罗马数字(低于 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..
我想在字符串中查找罗马数字(低于 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..
这段代码:
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...
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]+\))
它作为替代方案,但我认为你应该保持简单。