有一个字符串,其中包含一些@字符,我想在我的字符串中找到“@”并将其删除,但它也会找到并删除这些字符:“@”
int atsignPlace = str.IndexOf(" @ ");
while (atsignPlace >= 0)
{
str = str.Remove(atsignPlace,3);
atsignPlace = str.IndexOf(" @ ");
}
我尝试了这段代码,但它没有删除任何东西,所以它总是先找到'@',这使它成为一个无限循环。
int atsignPlace = str.IndexOf(" @");
while (atsignPlace >= 0)
{
if( atsignPlace+1 < str.Length && str[atsignPlace+1] == ' ' )
str = str.Remove(atsignPlace,3);
atsignPlace = str.IndexOf(" @ ");
}
替换方法也不正常。
str = str.Replace(" @ ", String.Empty);
可能是'@'字符存在问题。
输入字符串是一个sql查询,我试图从中删除一些参数。
[我使用try-catch进行例外]
答案 0 :(得分:2)
您的代码运行正常。简短但完整的演示程序:
using System;
class Test
{
static void Main()
{
string before = "xyz @ abc@123";
string after = CustomRemove(before);
Console.WriteLine(after); // Prints xyzabc@123
}
static string CustomRemove(string text)
{
int atSignIndex = text.IndexOf(" @ ");
while (atSignIndex >= 0)
{
text = text.Remove(atSignIndex, 3);
atSignIndex = text.IndexOf(" @ ");
}
return text;
}
}
编辑:当然,Replace
也可以正常工作:
using System;
class Test
{
static void Main()
{
string before = "xyz @ abc@123";
string after = before.Replace(" @ ", "");
Console.WriteLine(after); // Prints xyzabc@123
}
}
如果您仍然看到 的问题,那么问题在于您使用此代码的方式,而不是代码本身。
一个猜测:你可能在“@”中有非打印字符,这会阻止它们被删除。但你还没有真正给我们足够的信息说。一个简短但完整的程序演示它不起作用会有所帮助......
答案 1 :(得分:1)
保持简单:
string result = input.Replace(" @ ", String.Empty);
答案 2 :(得分:0)
我会使用正则表达式来确保您获得任意数量的空格:
Regex.Replace(input, @"\s+@\s+", m => string.Empty);
答案 3 :(得分:0)
string LclString = "@12 @ 123@123 @ @";
LclString = LclString.Replace(" @ ", " ");
收益率: @ 12 123 @ 123 @