【问题标题】:Find and replace a part of a string c#查找和替换字符串的一部分c#
【发布时间】:2020-06-12 13:40:13
【问题描述】:

我在一个字符串中有一个 SQL 查询,我想用一个新值替换字符串的一部分。

我正在寻找的字符串中的部分是 a : 直到它命中 a 或 a )。它找到的部分需要用问号替换。

我已经为此工作了一段时间,但我似乎无法找到解决此问题的解决方案。

谁能进一步帮助我?

我想获得一部分的示例字符串:

"INSERT INTO ORDERS  ( ORDER_ID, CUSTNO, COMPANY_NAME, ITEM, AMOUNT1, AMOUNT2) 
VALUES ( :WS_ORDER_ID, :WS_ORDER_CUSTNO, :WS_ORDER_COMPANY_NAME, :WS_ITEM, :WS_AMOUNT1, :WS_AMOUNT2)"

所以我希望字符串看起来像:

"INSERT INTO ORDERS  ( ORDER_ID, CUSTNO, COMPANY_NAME, ITEM, AMOUNT1, AMOUNT2) 
VALUES ( ?, ?, ?, ?, ?, ?)"

我试图创造的东西:

public String Replace(String value, String firstValue, String lastValue, String replacementValue) {
      int firstLocation = value.IndexOf(firstValue);
      var lastLocation = value.IndexOf(lastValue);

      if (value.Contains(firstValue)) {
        String modifiedValue;
        modifiedValue = value.IndexOf(Convert.ToChar(firstLocation), lastLocation.ToString());
        String newValue = value.Replace(modifiedValue, replacementValue);
      }

      return newValue;
    }

类似的东西,但我无法弄清楚。

然后我想要一个 foreach 循环,该循环采用此方法并用?替换每个 :WORD。

最好的问候

【问题讨论】:

  • 所以你希望参数名称,如:foo,替换为?,只要它们后跟逗号或右括号?
  • 您没有将其用作准备好的语句是否有原因? :PARAM_NAME 形式被广泛用作 SQL 准备语句中的占位符。

标签: c# asp.net .net string


【解决方案1】:

如果 ':' 保证作为标记是唯一的,那么像这样的简单方法应该可以解决问题:

public string Replace(string text)
{
    string[] items = text.Split(':');
    StringBuilder stringBuilder = new StringBuilder();
    stringBuilder.Append(items[0]);
    for(int i=1;i<items.Length;i++)
    {
        string item = items[i].TrimEnd();
        stringBuilder.Append("?" + item[item.Length - 1]);
    }
    return stringBuilder.ToString();
}

【讨论】:

  • 不幸的是,这并不适用于所有场合。当参数不在查询末尾时,它只会删除查询的其余部分,哈哈。
猜你喜欢
  • 2021-11-15
  • 1970-01-01
  • 2017-01-17
  • 2020-05-27
  • 1970-01-01
  • 2018-12-18
  • 1970-01-01
  • 1970-01-01
  • 2023-02-13
相关资源
最近更新 更多