我有一個字符串,它是一個句子或兩個長(多於一個字)。在這個句子中會有一個哈希標記的詞,例如#word
。這需要用*word*
代替。c中的字符串替換字符#
如果一句話是:
Today the weather is very nice #sun
它應該成爲:
Today the weather is very nice *sun*
我怎麼會去這樣做呢?
我有一個字符串,它是一個句子或兩個長(多於一個字)。在這個句子中會有一個哈希標記的詞,例如#word
。這需要用*word*
代替。c中的字符串替換字符#
如果一句話是:
Today the weather is very nice #sun
它應該成爲:
Today the weather is very nice *sun*
我怎麼會去這樣做呢?
你可以做一個正則表達式,像這樣:
var output = Regex.Replace(input, @"#(\w+)", "*$1*");
這是怎麼得到一個*在這個詞的盡頭? – Rothmanberger
@ user2256772我沒有看到你的編輯關於SO刪除你的星號。看到我更新的答案。 –
現在就試試吧 – Rothmanberger
試試這個:
string theTag = "sun";
string theWord = "sun";
string tag = String.Format("#{0}", theTag);
string word = String.Format("*{0}*", theWord);
string myString = "Today the weather is very nice #sun";
myString = myString.Replace(tag, word);
問題是這個詞可能是任何東西,而不僅僅是太陽 – Rothmanberger
@ user2256772如果使用String.Format創建要替換的標記,就像上面的代碼一樣,那麼它會正常工作 – rhughes
你可以試試這個
string text = "Today the weather is very nice #sun";
int startindex = text.Indexof('#');
int endindex = text.IndexOf(" ", startIndex);
text = text.Replace(text.substring(startIndex, 1), "*")
text = text.Replace(text.substring(endindex, 1), "*")
沒有花哨的功能和庫只是常識並解決您的問題。它支持儘可能多的散列詞,只要你願意。
爲了演示它是如何工作的,我創建了1個文本框和1個按鈕,但是你可以在控制檯或幾乎任何東西中使用這個代碼。
string output = ""; bool hash = false;
foreach (char y in textBox1.Text)
{
if(!hash) //checks if 'hash' mode activated
if (y != '#') output += y; //if not # proceed as normal
else { output += '*'; hash = true; } //replaces # with *
else if (y != ' ') output += y; // when hash mode activated check for space
else { output += "* "; hash = false; } // add a * before the space
} if (hash) output += '*'; // this is needed in case the hashed word ends the sentence
MessageBox.Show(output);
不料
Today the weather is very nice #sun
成爲
Today the weather is very nice *sun*
這裏是相同的代碼,但在方法的形式爲你彈出就在你的代碼
public string HashToAst(string sentence)
{
string output = ""; bool hash = false;
foreach (char y in sentence)
{
if (!hash)
if (y != '#') output += y;
else { output += '*'; hash = true; } // you can change the # to anything you like here
else if (y != ' ') output += y;
else { output += "* "; hash = false; } // you can change the * to something else if you want
} if (hash) output += '*'; // and here also
return output;
}
證明你如何修改這個以下是一個可定製的版本
public string BlankToBlank(string sentence,char search,char highlight)
{
string output = ""; bool hash = false;
foreach (char y in sentence)
{
if (!hash)
if (y != search) output += y;
else { output += highlight; hash = true; }
else if (y != ' ') output += y;
else { output += highlight+" "; hash = false; }
} if (hash) output += highlight;
return output;
}
因此搜索將搜索詞前的字符和高亮字符將圍繞這個詞。字被定義爲字符,直到它到達空格或字符串的末尾。
這是一個過於重複的問題 –