如何用希伯来语替换这个字符串?

时间:2013-05-01 06:32:29

标签: c# .net string replace

我想用希伯来字符串替换这个占位符。 但不幸的是,字符串替换不起作用。看起来在希伯来字符串中根本找不到占位符字符串。

    [Test]
    public void Fancy_placeholder_should_be_replaced()
    {
        const string input = "(השדה @%1$ קצר מדי (@%2$ תווים לפחות";
        const string expected = "(השדה {0} קצר מדי ({1} תווים לפחות";

        var dummy = input.Replace("%2$@", "{1}");
        dummy = dummy.Replace("%1$@", "{0}");

        Assert.AreEqual(expected, dummy);
    }

我如何在这里进行更换工作?

2 个答案:

答案 0 :(得分:2)

这是从右到左的问题弄乱了结果,具体来说,它是“@”字符。 将您的功能修改为:

public void Fancy_placeholder_should_be_replaced()
    {
        const string input = "(השדה @%1$ קצר מדי (@%2$ תווים לפחות";
        const string expected = "(השדה {0} קצר מדי ({1} תווים לפחות";

        var formatted = input.Replace("@%2$", "{1}");
        formatted = formatted.Replace("@%1$", "{0}");

        bool same2 = expected == formatted;
        Assert.AreEqual(expected, formatted);
    }

tada!它有效...

答案 1 :(得分:0)

不知道希伯来语的语言,我知道他们从右到左阅读。 据推测,%1$不被视为“希伯来字符”。只需查看dummy.IndexOf("%1$")即可。它会给你7,这是右边第一个@之后的位置。所以,只是跳到结论:

    var dummy = input.Replace("@%2$", "{1}");
    dummy = dummy.Replace("@%1$", "{0}");