当前位置:  开发笔记 > 编程语言 > 正文

名为String.Format,有可能吗?

如何解决《名为String.Format,有可能吗?》经验,为你挑选了3个好方法。



1> LPCRoy..:

不,但这种扩展方法会做到这一点

static string FormatFromDictionary(this string formatString, Dictionary ValueDict) 
{
    int i = 0;
    StringBuilder newFormatString = new StringBuilder(formatString);
    Dictionary keyToInt = new Dictionary();
    foreach (var tuple in ValueDict)
    {
        newFormatString = newFormatString.Replace("{" + tuple.Key + "}", "{" + i.ToString() + "}");
        keyToInt.Add(tuple.Key, i);
        i++;                    
    }
    return String.Format(newFormatString.ToString(), ValueDict.OrderBy(x => keyToInt[x.Key]).Select(x => x.Value).ToArray());
}


小心,在`formatString`中使用"{{thing}}"并在`ValueDict`中使用名为"thing"的键将替换字符串中的"thing"作为数字.

2> Pavlo Neiman..:

检查一下,它支持格式化:

    public static string StringFormat(string format, IDictionary values)
    {
        var matches = Regex.Matches(format, @"\{(.+?)\}");
        List words = (from Match matche in matches select matche.Groups[1].Value).ToList();

        return words.Aggregate(
            format,
            (current, key) =>
                {
                    int colonIndex = key.IndexOf(':');
                    return current.Replace(
                        "{" + key + "}",
                        colonIndex > 0
                            ? string.Format("{0:" + key.Substring(colonIndex + 1) + "}", values[key.Substring(0, colonIndex)])
                            : values[key].ToString());
                });
    }

如何使用:

string format = "{foo} is a {bar} is a {baz} is a {qux:#.#} is a really big {fizzle}";
var dictionary = new Dictionary
    {
        { "foo", 123 },
        { "bar", true },
        { "baz", "this is a test" },
        { "qux", 123.45 },
        { "fizzle", DateTime.Now }
    };
StringFormat(format, dictionary)



3> fabricioriss..:
现在可能了

使用C#6.0的Interpolated Strings,您可以这样做:

string name = "John";
string message = $"Hi {name}!";
//"Hi John!"


这不是要求的.如果您不知道该字段的调用内容,则不能为该标识符准备好变量.
推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有