2012-04-27 310 views
2

中首次出現我有這個字符串:替換字符串

Hello my name is Marco 

,我想用<br />取代(間Hellomy)第一空間。只有第一個。

在C#/ .NET 3.5上執行它的最佳方法是什麼?

+1

你應該給它一個自己去。這是可以很好解決的情況。 – ThePower 2012-04-27 12:41:38

+0

可能的重複[如何替換.NET中的字符串*的第一個實例?](http://stackoverflow.com/questions/141045/how-do-i-replace-the-first-instance-of -a-string-in-net) – 2012-04-28 02:27:56

回答

5

無需添加子,下面將只找到第一個空間實例。 從MSDN

報告在這種情況下指定 字符串中首次出現的從零開始的索引。

string x = "Hello my name is Marco"; 
    int index = x.IndexOf(" "); 
    x= index >=0 ? x.Insert(index, @"<br />") : x; 

編輯:如果你不知道會發生空間,一些驗證必須進入的地方。我已經編輯了相應的答案。

+0

我喜歡壓縮版本。但是,如果字符串沒有空間,我不能使用它...) – markzzz 2012-04-27 12:47:09

+0

@markzzz如果您不確定是否會出現空間,則必須進行一些驗證。我已經編輯了相應的答案。 – Marshal 2012-04-27 12:51:23

+4

這不會取代字符串,但只是在該字符串第一次出現後插入一個新的輸入字符串,所以在末尾x將'你好
我的名字是馬可'但它應該是這個'你好
我的名字是馬可'。 – yogi 2012-12-04 11:47:51

3
string tmp = "Hello my name is Marco"; 
int index = tmp.IndexOf(" "); 
tmp = tmp.Substring(0, index) + "<br />" + tmp.Substring(index + 1); 
0
string[] str = "Hello my name is Marco".Split(' '); 
string newstr = str[0] + "<br /> " + string.Join(" ", str.Skip(1).ToArray()); 
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/>"); 
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/>"); 
+1

你應該使這個擴展方法,然後它會''這是什麼是正確的「.ReplaceFirstOccurance(」是「,」
「)' – Jamiec 2012-04-27 12:41:14

+0

對不起!不要讓你? – 2012-04-27 12:45:16

+0

[擴展方法](http://msdn.microsoft.com/en-us/library/bb383977.aspx) – Jamiec 2012-04-27 12:46:15