2011-12-17 168 views
0

我有以下代碼。 abcnewdata是字符串變量。它所做的是將一些文本添加到變量abc並放入變量測試中。使用「?」運營商

var test = abc + "?ds=" + newdata; 

我想改變這個代碼,以便如下:

"?ds=" + newdata; 

僅添加如果在字符串ABC沒有問號。

有沒有一種簡單的方法可以做到這一點。我正在考慮使用「?」運營商,所以我可以做這個內聯,但我不知道如何使用它。

+0

小心三元運算符。對於某些事情來說沒問題,但對我個人來說,這正在接近使用IF語句切換到的位置。當你去重構代碼或添加新的功能時,我發現複雜的三元語句是一種責任。請記住,離開公司後維護代碼的人是一個精神病殺手,他知道你住在哪裏。 – 2011-12-17 05:03:56

回答

2

是的,你應該能夠使用三元操作符-? - 爲此。

我想你想添加「?」如果不存在的話。

var test = abc + (abc.Contains("?") ? "" : "?") + "ds=" + newdata; 

但如果你真的只想增加"?ds=" + newdata;如果沒有問號已經存在,這應該這樣做

var test = abc + (abc.Contains("?") ? "" : "?ds=" + newdata); 
1

你想這是什麼

var test = abc + (abc".Contains("?") ? "?ds=" + newdata : string.Empty); 

這將追加"?ds="當且僅當abc包含?否則,它只是附加空字符串。

這是功能上等同於該代碼

var test = abc; 

if (!abc.Contains("?")) 
    test += "?ds=" + newData; 

因此,選擇你的毒藥,無論是一個是完全清晰,做同樣的事情。

+2

檢查你的'是否'條件。我認爲你的意思是`if(!abc.Contains(「?」))`。在三元運算符的情況下,我更喜歡「if」。它對我來說看起來更清潔。 – 2011-12-17 05:04:26

0

你可以試試這個,

var test; 

if (!abc.Contains("?")) 
    { 
     test =String.Format("{0}?ds={1}",abc,newdata); 
    }