2016-08-25 18 views
1

我使用C#以编程方式从用户输入生成降价表。如何以编程方式生成降价表时转义字符串

编辑

考虑这个演示代码:

var a = Console.ReadLine(); 
var b = Console.ReadLine(); 
var c = Console.ReadLine(); 

var markdownTableBuilder = new StringBuilder(); 
markdownTableBuilder.AppendLine("| Column A | Column B | Column C |"); 
markdownTableBuilder.AppendLine("| -------- | -------- | ---------|"); 

markdownTableBuilder.AppendLine($"| {a} | {b} | {c}"); 
markdownTableBuilder.AppendLine(""); 

Console.WriteLine(markdownTableBuilder.ToString()); 

我想逃离从,B,C变量的所有降价的语法。例如,如果用户输入类似Hello | *世界*,应该逃到你好\ | \ *世界\ *

+0

不完全确定你的意思,但可以有效地写下如下内容: 'foreach(char char in string){bool escaped = false;字符串noMarkDown =“”; if(char =='<'){escaped = true;} if(char =='>'){escaped = false;} if(!escaped){string + = char;}}' –

+0

如果这就是你的意思所以我会将其作为回答 –

+0

@JamesHughes对不起,但我不想删除字符。我想“逃避”他们。看我的编辑。 – Matas

回答

2

您可以使用正则表达式替换:

string escaped = Regex.Replace(userInput, @"([|\*])", @"\$1"); 

这将找到任何'|', '\', '*'特点,并提出一个'\'在它的前面。

+0

它不会替换\字符,因为反斜杠字符\在这里意味着转义字符'*',所以我们需要双反斜杠\这里 正确的代码是 'string escaped = Regex.Replace(userInput,@“([| \\ * ])“,@”\ $ 1“);' – Artemious

相关问题