我有一个像
这样的字符串string text="~aaa~bbb~ccc~bbbddd";
输入值为: bbb
所以在上面的字符串中我应该删除值“~bbb”
结果字符串应为
text="~aaa~ccc~bbbddd";
答案 0 :(得分:4)
一种方法是:
string text = "~aaa~bbb~ccc~bbbddd";
string newStr = string.Join("~", text.Split('~').Where(r => r != "bbb"));
但如果考虑性能,那么请考虑其他一些解决方案
答案 1 :(得分:1)
我不确定你想做什么但是如果我有它你可以这样做:
private string ReplaceFirstOccurrence(string Source, string Find, string Replace)
{
int Place = Source.IndexOf(Find);
string result = Source.Remove(Place, Find.Length).Insert(Place, Replace);
return result;
}
var result =ReplaceFirstOccurrence(text,"~"+input,"");
答案 2 :(得分:1)
这应该可以解决问题:
string searchValue = "bbb";
text = text.Replace(String.Format("~{0}~", searchValue), "~");
一定要搜索结尾〜字符,否则你也会替换~bbbddd的一部分。
答案 3 :(得分:1)
您可以在c#中使用正则表达式@“\ bMYWORDTOREPLACE \ b”这将是......
using System.Text.RegularExpressions;
myString = Regex.Replace(myString, @"\bbbb\b", "", RegexOptions.IgnoreCase);
答案 4 :(得分:0)
喜欢这个
string str = "~rajeev~ravi";
string strRemove = "rajeev";
string strNew =str.Replace("~"+strRemove ,"");
答案 5 :(得分:0)
public static string Replace(this String str, char[] chars, string replacement)
{
StringBuilder output = new StringBuilder(str.Length);
bool replace = false;
if (chars.Length - 1 < 1)
{
for (int i = 0; i < str.Length; i++)
{
char c = str[i];
replace = false;
// int val = Regex.Matches(ch.ToString(), @"[a-zA-Z]").Count;
for (int j = 0; j < chars.Length; j++)
{
if (chars[j] == c)
{
replace = true;
break;
}
}
if (replace)
output.Append(replacement);
else
output.Append(c);
}
}
else
{
int j = 0;
int truecount = 0;
char c1 = '\0';
for (int k = 0; k < str.Length; k++)
{
c1 = str[k];
if (chars[j] == c1)
{
replace = true;
truecount ++;
}
else
{
truecount = 0;
replace = false;
j = 0;
}
if(truecount>0)
{
j++;
}
if (j > chars.Length-1)
{
j = 0;
}
if (truecount == chars.Length)
{
output.Remove(output.Length - chars.Length+1, chars.Length-1);
// output.Remove(4, 2);
if (replace)
output.Append(replacement);
else
output.Append(c1);
}
else
{
output.Append(c1);
}
}
}
return output.ToString();
}
static void Main(string[] args)
{
Console.WriteLine("Enter a word");
string word = (Console.ReadLine());
Console.WriteLine("Enter a word to find");
string find = (Console.ReadLine());
Console.WriteLine("Enter a word to Replace");
string Rep = (Console.ReadLine());
Console.WriteLine(Replace(word, find.ToCharArray(), Rep));
Console.ReadLine();
}
}
答案 6 :(得分:0)
嗯,你可以这样做。
(您只需要输入'bbb')
string text = "~aaa~bbb~ccc~bbbddd";
string input = "bbb";
string output = text.Replace("~" + input + "~", "~");
Console.WriteLine(output);
输出:~aaa~ccc~bbbddd
答案 7 :(得分:0)
这是一个古老的问题,但是我的解决方案是为字符串创建扩展函数。 就像Java方法“ .ReplaceFirst”一样。
您需要创建静态类(例如Helper),并在该类内部创建静态扩展功能:
public static class Helpers
{
public static string ReplaceFirst(this String str, string find, string replace)
{
int place = str.IndexOf(find);
if (place < 0)
{
return str;
}
//return str.Substring(0, place) + replace + str.Substring(place + find.Length);
return str.Remove(place, find.Length).Insert(place, replace);
}
}
用法与.Replace方法相同...
string text="~aaa~bbb~ccc~bbbddd";
string temp = text.ReplaceFirst("~bbb", ""); //text="~aaa~ccc~bbbddd"
或更多
string text="~aaa~bbb~ccc~bbbddd";
string temp = text.ReplaceFirst("~bbb", "").ReplaceFirst("~bbb", ""); //text="~aaa~cccddd"