Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# string.replace every'除了第一个和最后一个_C#_.net - Fatal编程技术网

C# string.replace every'除了第一个和最后一个

C# string.replace every'除了第一个和最后一个,c#,.net,C#,.net,我有一个项目,在那里我调用了一个MySQL查询,它是由我发送给该方法的字符串构建的 如果字符串只有一个引号,我就有问题了 我想用\'替换它,这样MySQL就安全了 但是当我建立查询时,我在字符串的开头和结尾添加了一个引号和一个%;例如“%texthhere%” 因此,我需要知道如何替换除第一个和最后一个报价之外的每个报价 因此,它将仅从以下位置替换:'%thi'stext%' 为此:'%thi'stext'%首先使用修剪函数从字符串的每一侧剪切单引号。然后将“替换为”,并将单引号添加回字符串的每

我有一个项目,在那里我调用了一个MySQL查询,它是由我发送给该方法的字符串构建的

如果字符串只有一个引号,我就有问题了

我想用\'替换它,这样MySQL就安全了

但是当我建立查询时,我在字符串的开头和结尾添加了一个引号和一个%;例如“%texthhere%”

因此,我需要知道如何替换除第一个和最后一个报价之外的每个报价

因此,它将仅从以下位置替换:'%thi'stext%'


为此:'%thi'stext'%

首先使用修剪函数从字符串的每一侧剪切单引号。然后将“替换为”,并将单引号添加回字符串的每一侧。如果“是字符串中的第一个或最后一个字符,这将不起作用,因为它将被修剪。

首先使用修剪函数从字符串的每一侧剪切单引号。然后将“替换为”,并将单引号添加回字符串的每一侧。如果“是字符串中的第一个或最后一个字符,则此操作将不起作用,因为它将被修剪。

我以前执行此操作的方法如下:

使用IndexOf获取字符第一次出现的索引。 从步骤1中找到的索引开始获取原始字符串的子字符串 反转步骤2中的子字符串 对步骤3中的反向字符串重复步骤1,现在剩下一个子字符串,其中包含从第一个“字符”之后到最后一个“字符”之前的字符串。 再次反转步骤4中的子字符串,使其恢复到原始顺序,并用“”替换剩余的“字符” 使用伪代码重新生成字符串-

finalString=string.Concat originalString.Substring0,第一个索引, 替换步骤5中的Substring, originalString.SubstringsecondIndex,originalstringglength-1

这将得到一个字符串,其中包含原始字符串中第一个“字符”和最后一个“字符”之后的任何内容,中间的所有内容都将是替换后的“字符”,这些字符现在为MySQL查询转义

希望这有帮助


编辑:注意,当我这样做的时候,它是用于链接应用程序中的字符串操作,而不是用于数据库查询。我同意最好像其他人所说的那样使用存储的进程和参数;但是,我提供的解决方案没有采用最佳实践等,它可以满足OP的要求。

我以前的做法如下:

使用IndexOf获取字符第一次出现的索引。 从步骤1中找到的索引开始获取原始字符串的子字符串 反转步骤2中的子字符串 对步骤3中的反向字符串重复步骤1,现在剩下一个子字符串,其中包含从第一个“字符”之后到最后一个“字符”之前的字符串。 再次反转步骤4中的子字符串,使其恢复到原始顺序,并用“”替换剩余的“字符” 使用伪代码重新生成字符串-

finalString=string.Concat originalString.Substring0,第一个索引, 替换步骤5中的Substring, originalString.SubstringsecondIndex,originalstringglength-1

这将得到一个字符串,其中包含原始字符串中第一个“字符”和最后一个“字符”之后的任何内容,中间的所有内容都将是替换后的“字符”,这些字符现在为MySQL查询转义

希望这有帮助

编辑:注意,当我这样做的时候,它是用于链接应用程序中的字符串操作,而不是用于数据库查询。我同意最好像其他人所说的那样使用存储的进程和参数;然而,我提供的解决方案,没有进入最佳实践等,将做什么OP正在寻求。

Reffer bellow链接

希望这个能帮助你 如果得不到解决方案,请告诉我,我将给出另一个解决方案

编辑 好的,那么试试这样的字符串,并给出反馈

string query=@"%thi'stext%";
Reffer波纹管连杆

希望这个能帮助你 如果得不到解决方案,请告诉我,我将给出另一个解决方案

编辑 好的,那么试试这样的字符串,并给出反馈

string query=@"%thi'stext%";
简单:

int first = s.IndexOf('\'');
int last = s.LastIndexOf('\'');
string prefix = s.Substring(0, first+1);
string query = s.Substring(first+1, last-first-1);
string suffix = s.Substring(last);
s = prefix + query.Replace("'", "\\'") + suffix;
当然,您应该真正使用SQL参数。

简单:

int first = s.IndexOf('\'');
int last = s.LastIndexOf('\'');
string prefix = s.Substring(0, first+1);
string query = s.Substring(first+1, last-first-1);
string suffix = s.Substring(last);
s = prefix + query.Replace("'", "\\'") + suffix;
当然,你真的应该用SQL参数来代替。

我真蠢 我终于把这个方法看得好多了

我用字符串修复了它。替换“,\”

在我开始添加%&“the”和结尾添加%&“the”之前

我从你们身上学到了很多,非常感谢你们,我太蠢了 我终于把这个方法看得好多了

我用字符串修复了它。替换“,\”

在我开始添加%&“the”和结尾添加%&“the”之前


我从你们身上学到了很多,非常感谢

我希望这个方法能帮助你们: 假设raw与模式“%free text here with single quotes%”匹配

    private string ReplaceSpecial(string raw)
    {
        return String.Format("'%{0}%'", raw.Substring(2, raw.Length - 2).Replace("'", "\\'"));
    }

我希望这个方法能帮助你: 假设raw与模式“%free text here with single quotes%”匹配 "



对于基于.IndexOfint,int的迭代解决方案来说,这并不难。那么您尝试了什么呢?我不知道如何说string.replace',\,除了第一个和最后一个。或者,如果除了“%texthhere%”之外没有单引号,那么这会导致问题,那么您应该使用参数。@SLaks,但是您对您的建议的信任程度如何;对于基于.IndexOfint,int的迭代解决方案来说,这并不难。那么您尝试了什么呢?我不知道如何说string.replace',\,除了第一个和最后一个。或者,如果除了“%texthhere%”之外没有单引号,那么这会导致问题,那么您应该使用参数。@SLaks,但是您对您的建议的信任程度如何;这将适用于OP的示例。但我似乎不清楚引号是否总是第一个和最后一个字符。如何只修剪第一个和最后一个单引号@KKKWOL我只想替换文本中间的引号,作为从'%Test'到%''到'%TES ''%1!''%1!''的示例,这将与OP的示例一起使用。但我似乎不清楚引号是否总是第一个和最后一个字符。如何只修剪第一个和最后一个单引号@KKKWOL我只想替换文本中间的引号,因为我的样本从'%Test'到'%T'到'%TES ''似乎有帮助,但是我不是超级专家,有一个例子会对我有帮助吗?或者你有你的代码如何做到这一点?-1,这就是我所谓的无偿过度工程。您真的不需要为了替换几个字符而将字符串反转两次。感谢@nneonneo的否决票,为什么不建议一种更好的方法来查找最后一个“字符”,而不反转字符串?另外,我的答案假设字符串的第一个和最后一个字符不是自动的“字符”,这意味着您必须保留SQL中所需撇号前后的内容query@Izzy我现在在我的iPad上,但很快会尝试发布一些实际的代码。这似乎会有帮助,但由于我不是超级专家,有没有一个例子对我有帮助?或者你有你的代码如何做到这一点?-1,这就是我所谓的无偿过度工程。您真的不需要为了替换几个字符而将字符串反转两次。感谢@nneonneo的否决票,为什么不建议一种更好的方法来查找最后一个“字符”,而不反转字符串?另外,我的答案假设字符串的第一个和最后一个字符不是自动的“字符”,这意味着您必须保留SQL中所需撇号前后的内容query@IzzyG-我现在在我的iPad上,但不久将尝试发布一些实际代码。但我不想将第一个或最后一个“我想替换从“%thi'stext%”替换为这个“%thi'stext%”,但我不想替换第一个或最后一个“我想替换”从'%thi'stext%'到这个'%thi'stext%'嘿嘿,这是最好的解决方案。下一次,最好陈述您的完整问题,这样我们就可以避免这个X-Y问题:\'与':它们具有值'。我想你想要的是\'或@\',其值为\'。查找转义字符和逐字字符串以了解原因,这是最好的解决方案。下一次,最好陈述您的完整问题,这样我们就可以避免这个X-Y问题:\'与':它们具有值'。我想你想要的是\'或@\',其值为\'。查找转义字符和逐字字符串以了解原因