2014-01-23 52 views
0

在這樣的字符串中:Last-Name - 位於南岸的道路上。 我試圖用「 - 」替換「」&「 - 」中的所有實例,只跳過第二個「 - 」實例。然後我想用「,」替換「 - 」。
我已經試過目前我們這樣的:如何只替換二次後的所有連字符

var all = node.InnerText.Replace(","," "); 
var hyph = all.Replace("—",",").Replace("-",","); 

其中一期工程......但它正在取代一切,我需要的第二個實例「 - 」保持,而所有其他情況」,‘’ - 「&」 - 「更改爲」「。所以它看起來像這樣:
(最後,名字,住在南岸的一條路上)。
當我需要它看起來像:(姓氏,住在南岸的一條道路上)。

做了一些環視,似乎IndexOf()是要走的路,但我不確定如何設置我的查詢。我會用這樣的東西走在正確的軌道上嗎?或者有更好的方法去解決這個問題嗎?說實話,我不完全確定,而且我仍然在學習C#,所以很抱歉,如果這是措辭不當或不符合標準。

int position = dash.IndexOf(find); 
if (position > 1) 
{ 
return dash; 
} 
return dash.Substring(1, position) + replace + dash.Substring(postion + find.Length); 

在任何情況下這將是:

姓氏 - 在這裏一些文本

姓氏 - 一些排序文本

最後的名字 - 更多的文字,這裏

姓氏 - 在這裏

多個文本凡只是需要:

姓氏,這裏的一些文字。

謝謝你的幫助!

+0

你能給出的是一些更多的例子,什麼需要? – Paul

+0

在任何情況下,這將是姓氏 - 這裏的一些文本或姓氏 - 某種文本或姓氏 - 更多的文本,在這裏或姓氏 - 更多的文字在這裏。它只需要姓氏,這裏有一些文字。 – cbrannin

回答

1

在這裏你去

int firstHyph = all.IndexOf('-'); // find the first hyphen 
int secondHyph = all.IndexOf('-', firstHyph + 1); // find the second hyphen 
var sb = new StringBuilder(all); 
sb[secondHyph] = '#'; // replace the second hyphen with some improbable character 
// finally, replace all hyphen and whatever you need and change that 
// "second hyphen" (now sharp) to whatever you want 
var result = sb.ToString().Replace("-", " ").Replace("#", ",");  
+0

對不起,這確實按預期工作。謝謝。由於複雜的性質和我缺乏進一步的解釋,它不會成爲我的問題的工作解決方案......但這不是你的代碼的錯誤,而是錯誤的HTML格式化的錯誤。再次感謝! – cbrannin

1

使用正則表達式,查找搜索運算符並將其設置爲搜索第一個之後的所有內容。對不起,在電話中回答這個問題,所以我現在無法查看它。

1

簡單和獨特的解決方案

using System; 
using System.Text; 
using System.Collections.Generic; 
using System.Linq; 
using System.Diagnostics; 

public class Test 
{ 
    public static void Main() 
    { 
     string all = Convert.ToString("In every case it will be last name — some text here OR last name — some-sort of text OR last-name — more text, here OR last name — more-text here").Replace(",", " "); 
     int hyph1 = all.IndexOf('—'); 
     int hyph2 = hyph1 + all.Substring(++hyph1).IndexOf('—'); 
     string partial = all.Substring(0, ++hyph2).Replace("—", " "); 
     string res = String.Concat(partial, "—", all.Substring(++hyph2).Replace("—", " ").Replace("-", ",")); 
     Console.Write(res.ToString()); 
    } 
} 

見關於小提琴:

http://ideone.com/wWCGeA

相關問題