0

「{Day} - は勝利の日です。{Day} - は私の誕生日です」という文字列があります。

{Day} を別の数字に置き換えるには? 私は試します:

string text = "{Day} - is a victory day. {Day} - is my birthday";
if (text.Contains("{Day}"))
    text = text.Replace("{Day}", xNet.Rand.Next(1, 30).ToString());

しかし、日は2回の交換で同じです。

4

6 に答える 6

0

はい、Rand.Next一度しか評価されないため、同じ値が置き換えられます。

正規表現または手動で行うことができます:

string text = "{Day} - is a victory day. {Day} - is my birthday";
var sb = new StringBuilder(text);
while (text.Contains("{Day}"))
{
  int p=text.IndexOf("{Day}");
  sb.Remove(p,5);
  sb.Insert(p, xNet.Rand.Next(1, 30).ToString());
  text = sb.ToString();
}
于 2013-05-21T21:23:39.163 に答える
0

これはおそらく、あなたがやろうとしていることを実行するための最良の方法ではありません...しかし、少なくとも、text.Replace()メソッドを 1 回呼び出すだけで、期待どおりに機能していることを理解する必要があります。IE の各インスタンスを{Day}、メソッドが生成する番号に置き換えます。それらを 2 つの異なる値にしたい場合は、2 つの異なる値を置き換える必要があります。

    string text = "{Day} - is a victory day.  {Day2} - is my birthday";
    text = text.Replace("{Day}", xNet.Rand.Next(1, 30).ToString());
    text = text.Replace("{Day2}", xNet.Rand.Next(1, 30).ToString());
于 2013-05-21T21:23:40.233 に答える