【问题标题】:"(" and ")" Replace in C# [closed]“(”和“)”在C#中替换[关闭]
【发布时间】:2013-10-24 14:18:37
【问题描述】:

所以我试图从与表中的 SQL 列相关的用户输入中替换下面的字符。

示例: 用户创建一个名为 My(first)try 的字段。在 SQL 中,这表现为 Myfirsttry。

我目前正在编写代码来用我们的替换用户输入,但我被卡住了。

到目前为止我有这个。

  itemreplace = itemreplace.Replace("(", "");

然而,这并不能解决问题。想法、cmets、建议?

【问题讨论】:

  • 那么它做什么呢?运行那行代码的结果是什么?
  • 如果你再为右括号做同样的事情,生活会更好吗?
  • itemreplace 是一个字符串,对吧?这当然应该工作。发布您的实际代码。我刚刚在一个快速脏控制台应用程序中尝试过,它用空字符串正确替换了左括号。
  • 这闻起来就像您要求进行 SQL 注入攻击...请告诉我您并没有尝试清理用户的输入并从文本中进行查询...
  • 基本上与两天前的这个问题完全相同(括号和全部):stackoverflow.com/questions/19280553/…

标签: c# .net sql string


【解决方案1】:

我觉得 真实世界的情况 更复杂,您并没有表明这一点,但要处理您的示例文本 My(first)try,您可以链接 Replace 语句:

itemreplace = itemreplace.Replace("(", "").Replace(")", "");

然而,真实世界的情况似乎更倾向于像这样利用正则表达式:

^[a-zA-Z0-9_@#][a-zA-Z0-9@$#_]*$

这里有一个Regex 101 可以证明这一点。

然后使用它可能看起来像这样:

var valid = Regex.IsMatch("My(first)try", pattern);

我确实参考了这篇文章 What special characters are allowed in T-SQL column name?,以确定列名允许使用的字符。

【讨论】:

  • 谢谢大家。我确实尝试过搜索,但我想我不知道我在搜索什么。
【解决方案2】:

第一个选项:

String itemreplace = new String("My(first)try");
String charsToRemove = new String[] {"(", ")"};
foreach (char c in charsToRemove)
{
    itemreplace = itemreplace.Replace(c, string.Empty);
}

第二个选项:

itemreplace = itemreplace.Replace("(", string.Empty).Replace(")", string.Empty);

【讨论】:

    猜你喜欢
    • 2018-06-12
    • 2021-12-16
    • 2014-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 2013-04-14
    • 2012-05-13
    相关资源
    最近更新 更多