【发布时间】:2016-05-26 15:36:36
【问题描述】:
我创建了一个正则表达式,它删除了像 ('&) 这样的特殊字符,并使每个单词的首字母大写,并在两个单词之间填充下划线 (_)。例如,
输入:"V_DV3501_Value can't be empty"
输出:"V_DV3501_Value_Cant_Be_Empty"
我创建的正则表达式产生的输出为,
输出:"V_DV3501_Value_Can't_Be_Empty"
问题是撇号(')字符不会从字符串中替换。如果你能在解决这个问题的代码中提出任何其他模式,我可以。
class Program
{
static void Main(string[] args)
{
string createString = "";
string input = "";
var pattern = @"(?:[^a-zA-Z_]*)((?<output>[a-zA-Z0-9_]*)[\s+&<>\',\/=-]*|$)*";
var subject = "V_DV3501_Value can't be empty";
subject = subject.ToString().Replace("&", "and");
var regex = new Regex(pattern);
var match = regex.Match(subject);
Console.WriteLine("pattern: {0} {1} Length: {2}", pattern, match.Success, match.Length);
foreach (Capture capture in match.Groups["output"].Captures)
{
Console.WriteLine(" {0} @ {1} length {2}", capture.Value, capture.Index, capture.Length);
input = capture.Value + "_";
if (!String.IsNullOrEmpty(input))
{
input = input.First().ToString().ToUpper() + input.Substring(1);
}
createString = createString + input;
}
createString = createString.Remove(createString.Length - 2);
Console.WriteLine("Final: " + createString);
}
}
谢谢
【问题讨论】:
-
@WiktorStribiżew 非常感谢您的快速回复。
-
太好了,我能帮上忙。这绝对不是Regex to remove apostrophe 的重复。我发布了带有解释的答案,如果对您有用,请考虑接受。