2011-12-17 22 views
0

私は次のコードを持っています。 abcnewdataは文字列変数です。それは、変数abcに何らかのテキストを追加して変数testに入れることです。"?"演算子

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

は、私は、次のようにこのコードを変更する:文字列abcには疑問符が存在しない場合にのみ、

"?ds=" + newdata; 

が追加されます。

これを行うには簡単な方法がありますか?私は "?"私はちょうどこのインラインで行うことができますが、私はそれを使用する方法がわかりません。

+0

は三項演算子に注意してください。いくつかのことについてはうまくいきますが、私にとっては、個人的には、これはIF文を使う点に近づいています。コードをリファクタリングしたり、新しい機能を追加したりすると、複雑な3つのステートメントが発生します。あなたが会社を離れた後にあなたのコードを管理する人は、あなたがどこに住んでいるかを知っている精神病のキラーです。 –

答えて

2

はい、この場合、3値演算子-?を使用できるはずです。

私はあなたが "?"既に存在しない場合。

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

しかし、誰疑問符がすでに存在していない場合は、あなたが本当に唯一"?ds=" + newdata;を追加したい場合は、これは何がしたいことはこれは"?ds="を追加します。この

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

ある

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

行う必要がありますabcに?が含まれている場合に限ります。それ以外の場合は、空の文字列を追加するだけです。

これは

var test = abc; 

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

このコードと機能的に同等であるので、あなたの毒を選び、いずれか一方が完全に読みやすいですし、同じことを行います。あなたはこれを試すことができ

+2

if条件を確認してください。あなたが 'if(!abc.Contains("? "))'を意味すると思います。三項演算子の場合には 'if'を優先します。それはちょうど私にきれいに見える。 –

+0

Aaaaaaarrhg!少なくとも* my poison *には中括弧が付いています! –

+0

@JimMischel、そうですよ!打ち間違え。ありがとう。 –

0

var test; 

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