1

我有一个字符串

string text="~aaa~bbb~ccc~bbbddd";

输入值为:bbb

所以在上面的字符串中我应该删除值“~bbb”

结果字符串应该是

text="~aaa~ccc~bbbddd";
4

8 回答 8

4

我不确定你想做什么,但如果我有,你可以这样做:

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,"");
于 2013-05-15T09:45:15.830 回答
4

一种方法是:

string text = "~aaa~bbb~ccc~bbbddd";
string newStr = string.Join("~", text.Split('~').Where(r => r != "bbb"));

但如果性能是考虑因素,那么考虑其他一些解决方案

于 2013-05-15T09:45:23.593 回答
1

这应该可以解决问题:

string searchValue = "bbb";
text = text.Replace(String.Format("~{0}~", searchValue), "~");

一定要搜索结尾的 ~ 字符,否则你也会替换 ~bbbddd 的一部分。

于 2013-05-15T09:47:00.363 回答
1

您可以在 c# 中使用正则表达式 @"\bMYWORDTOREPLACE\b" 这将是...

using System.Text.RegularExpressions;

myString = Regex.Replace(myString, @"\bbbb\b", "", RegexOptions.IgnoreCase);
于 2013-05-15T09:47:15.673 回答
0

像这样

string str = "~rajeev~ravi";
string strRemove = "rajeev";
string strNew =str.Replace("~"+strRemove ,"");
于 2013-05-15T09:48:01.983 回答
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();

}

}

于 2016-09-20T10:32:08.930 回答
0

这是一个老问题,但我的解决方案是为字符串创建扩展函数。像“.ReplaceFirst”Java 方法。

您需要创建像 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"
于 2020-09-01T12:02:30.227 回答
-1

好吧,你可以做这样的事情。
(您只需要输入'bbb')

string text  = "~aaa~bbb~ccc~bbbddd";
string input = "bbb";                

string output = text.Replace("~" + input + "~", "~");
Console.WriteLine(output);

输出:~aaa~ccc~bbbddd

于 2018-01-27T08:51:42.420 回答