我有字符串列表。我想将它的每个元素转换为单引号字符串(即“ABC” - >'ABC'),如何在.net中执行此操作。
谢谢, OMKAR
答案 0 :(得分:1)
Linq可以在这里提供帮助。
var newList = oldList.Select(c => c.Replace("\"", "'"));
答案 1 :(得分:1)
这已经得到了很好的回答。但是,我预感到您正在使用C#中的字符串列表,然后尝试构建一个用于IN
语句的SQL表达式,例如:
SELECT * FROM table WHERE name IN ('John','Mary','Peter')
在这种情况下,您需要将字符串连接在一起,并通过将任何单引号字符加倍来防止代码注入攻击。
StringBuilder sb = new StringBuilder();
foreach (string entry in list) {
if (sb.Length > 0) sb.Append(",");
sb.Append("\'" + entry.Replace("'","''") + "\'");
}
string expr = sb.ToString();
当列表为空时,您还需要处理特殊情况,因为IN ()
不是SQL的有效语法。
如果这不是您想要的,请忽略我。 : - )强>
答案 2 :(得分:0)
如果您想用单引号替换所有双精度数,只需执行以下操作:
myString = myString.Replace( "\"", "'" );
但是,请注意'
在C#中不是有效的字符串分隔符,因此您不能拥有字符串'ABC'
,但是您可以拥有包含文本的字符串"'ABC'"
'ABC'
编辑
当看到杰夫的回答时,我看到你想要一份清单。在这种情况下,他的答案几乎正确 - 请尝试使用此变体:
var convertedList = myStringList.Select(s => s = s.Replace("\"", "'").ToList();
答案 3 :(得分:0)
我假设你有常规字符串s到's'(带引号的字符串),你想要一个List<>转换。
List<string> stringList = new List<string>();
//Fill the list with strings here.
var query = from str in stringList
select string.Format("\'{0}\'", str);
List<string> quotedList = query.ToList<string>();