我在VS2008中有一个c#项目,它有很多行代码如下:
string s = "bla blab" + x + "bla bla bla" + y + .... ;
我希望使用string.Format(...)将这些字符串转换为单个字符串。
我目前正在使用Resharper 5.0,我只需点击一下即可重构一行代码。 问题是我有更多这样的1000行,我不想手动遍历每一行。
有没有办法自动执行此操作?
编辑: 正如马克纠正我,我真的不需要这样做, 但我有另一个非常类似的问题: 我有这个代码
string s = "aaaaaaaaaaaaaaaaaaaaaaaa" +
"aaaaaaaaaaaaaaaaaaaaaaaa" +
"aaaaaaaaaaaaaaaaaaaaaaaa" +
"aaaaaaaaaaaaaaaaaaaaaaaa" +
"aaaaaaaaaaaaaaaaaaaaaaaa" +
"aaaaaaaaaaaaaaaaaaaaaaaa" +
"aaaaaaaaaaaaaaaaaaaaaaaa";
(字符串是一些sql查询)
我想将它重构为一个const字符串:
string s = "aaaaaaaaaaaaaaaaaa....aaaaa";
(这次,效率更高吧?)
resharper可以每个字符串自动执行此操作, 但同样,我想做很多次。
保持线条缩进会很棒:
string s = @"aaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaa";
但只有一条长线也可以。
感谢, 利。
答案 0 :(得分:5)
来自评论:
它更有效的记忆
不,不是。它是大约相同,因为数据传入时string.Format
略微 有效一个数组(通常是GEN0),有必要解析格式字符串(实际上非常快,公平)。
在规范中定义了复合字符串+
序列,即
string s = "abc" + x + "def" + y;
编译为:
string s = string.Concat("abc", x, "def", y);
在内部,这是非常有效的,并没有做经典的“伸缩弦”问题。另外,有string.Format
的重载占用了不同数量的操作数,以避免甚至是params-array开销。当所有操作数都是字符串时,还有额外的重载(它可以更容易)。
简而言之,这不会让你失望。除非你这样做,所以你可以提供外部格式(在i18n场景中很常见),我会不管它。你所做的只是冒着虫子的风险;你没有提高效率。
答案 1 :(得分:0)
您是否尝试过运行Resharper代码清理?您可以创建一个单独的配置文件,只进行所需的更改。