我有一个字符串,我需要逃避任何特殊组合的字符。换句话说,我需要在任何出现任何这种组合的前面贴上“\”。大多数组合实际上是单个字符(例如双引号或反斜线),但一些是多字符的(例如“& &”)。一种方法是用这些组合创建一个字符串数组,循环遍历它们并运行一个String.Replace()
,最后一个检查反斜杠以避免递归转义。但是有没有更好的(更优雅/快速/等)的方式呢? Thxc#:如何快速插入一个字符到任何出现的特殊字符组合前的字符串?
回答
使用你的想法替换,但使用StringBuilder而不是(much better perfomance)。
你可以把你的整个字符串和你想要做的每个替换类型运行String.Replace(),据我所知,这是最快/最优雅的方式来做到这一点。这就是为什么它是一种内置的方法。
Replace最大的问题是它每次调用时都会创建更多的字符串副本。这往往会导致大型项目中可衡量的性能问题。使用StringBuilder更好。 –
我想这也取决于正在使用的字符串的大小,任何低于256字节或4或5替换不会明显降低性能。但是,你是正确的,因为String对象是不可变的。yada yada yada –
您可以使用Regex.Replace。
var input = @"abc'def&&aa\cc""ff";
var output = Regex.Replace(input, @"'|&&|""|\\", m => @"\" + m); // => "abc\'def\&&aa\\cc\"ff"
Regex.Replace的性能很慢,即使这样String.Replace – Lunik
这取决于。如果你只需要几次而不是循环,那就没问题。该问题要求多个值的更好:优雅,快速...这是更优雅,更容易错误然后String.Replace你需要照顾替换顺序(例如“\”应该是最后,如果&和&&需要被替换等等)。你所谈论的是过早优化。此外,如果你有5件事要逃脱,你需要调用String.Replace 5次和Regex.Replace一次。 –
我认为我需要的效率比其他任何东西都多,但是无论如何感谢 –
- 1. puttging在一个java字符串如特殊字符“CTRL +插入”
- 2. 特殊字符#在一个字符串
- 3. 将带有特殊字符的字符串插入到RTF中
- 4. 插入带有特殊字符的字符串到列中
- 5. 如何在C中的字符串中插入一个字符?
- 6. 在字符串中插入特定长度的特殊字符
- 7. 如何从字符串的开头到字符串中的特定索引之前的字符的最后一个出现字符串的子字符串
- 8. Java - 如何删除字符串数组中的特殊字符?
- 9. 如何在特定字符出现之前读取字符串
- 10. 特殊的outfile mysql插入字符串?
- 11. 如何创建与C#特殊字符的字符串
- 12. 从字符串中提取hashtag直到出现特殊字符
- 13. 前之前的任何非字母数字字符的任何特殊字符C#
- 14. 在插入derbyDB之前搜索'特殊'字符的java字符串varchar字段
- 15. 如何在字符串的字符串处插入字符串?
- 16. 如何将具有特殊字符的字符串转换为转义字符串的另一个字符串
- 17. 用C中的特殊字符编写一个字符串#
- 18. 如何在一个字符串计数特殊字符
- 19. 最快的方式删除前导特殊字符的字符串在C#
- 20. 使Autohotkey忽略字符串中的任何特殊字符
- 21. 查找字符串中的任何特殊字符
- 22. 字VBA字符串插入特殊字符
- 23. 一个字符串在适当位置插入特殊字符使用C#
- 24. 如何插入特殊字符?
- 25. 从插入的字符串中删除特殊字符?
- 26. codeigniter插入:特殊字符修整我的字符串值
- 27. 在https json中插入的特殊字符返回字符串
- 28. 用字符串c中的unicode字符替换特殊字符#
- 29. 如何在字符串中的特定字符串之后插入字符串?
- 30. 如何按字符拆分字符串,注意特殊字符
你应该先反斜杠,而不是最后反斜杠,否则你会例如用“\ &&”替换“&&”,然后用“\\ &&”替换,这可能不是你想要的。 – Rawling
非常好,谢谢! –
你有没有&&&在你的字符串中?如果是,是否用于&&&& && &&? – tschmit007