3

私はこの文字列を持っています:

Hello my name is Marco

Helloそして、最初のスペース(との間my)を。に置き換えたいと思い<br />ます。最初だけ。

C#/。NET 3.5でそれを行うための最良の方法は何ですか?

4

6 に答える 6

11
 public static class MyExtensions
 {

   public static string ReplaceFirstOccurrance(this string original, string oldValue, string newValue)
    {
     if (String.IsNullOrEmpty(original))
        return String.Empty;
     if (String.IsNullOrEmpty(oldValue))
        return original;
     if (String.IsNullOrEmpty(newValue))
        newValue = String.Empty;
     int loc = original.IndexOf(oldValue);
     return original.Remove(loc, oldValue.Length).Insert(loc, newValue);
    }
}

次のように使用します。

string str="Hello my name is Marco";  
str.ReplaceFirstOccurrance("Hello", "<br/>");
str.ReplaceFirstOccurrance("my", "<br/>");
于 2012-04-27T12:38:08.737 に答える
4

サブストリングを追加する必要はありません。以下では、最初のスペースインスタンスのみが検索されます。MSDNから:

このインスタンスで指定された文字列の最初の出現のゼロベースのインデックスを報告します。

  string x = "Hello my name is Marco";
  int index = x.IndexOf(" ");
  if (index >= 0)
  {
      x=x.Remove(index,1);
      x = x.Insert(index, @"<br />");
  }

編集:スペースが発生するかどうかわからない場合は、いくつかの検証を行う必要があります。それに応じて答えを編集しました。

于 2012-04-27T12:38:12.680 に答える
3
string tmp = "Hello my name is Marco";
int index = tmp.IndexOf(" ");
tmp = tmp.Substring(0, index) + "<br />" + tmp.Substring(index + 1);
于 2012-04-27T12:36:18.643 に答える
1

さあ、これでうまくいくでしょう:

var s = "Hello my name is Marco";
var firstSpace = s.IndexOf(" ");
var replaced = s.Substring(0,firstSpace) + "<br/>" + s.Substring(firstSpace+1);

これを拡張メソッドにすることができます:

public static string ReplaceFirst(this string input, string find, string replace){
  var first= s.IndexOf(find);
  return s.Substring(0,first) + replace + s.Substring(first+find.Length);
}

そして、使用法は

var s = "Hello my name is Marco";
var replaced = s.ReplaceFirst(" ","<br/>");
于 2012-04-27T12:38:05.843 に答える
0
string[] str = "Hello my name is Marco".Split(' ');
string newstr = str[0] + "<br /> " + string.Join(" ", str.Skip(1).ToArray());
于 2012-04-27T12:37:47.517 に答える
0

単に使用する

Replace("Hello my name is Marco", " ", "<br />", 1, 1)
于 2020-09-14T09:33:06.090 に答える