标签: string-formatting

Visual Studio加载项,用于验证string.Format方法

string.Format是一种非常危险的方法.有很多东西可能出错,没有任何编译错误:

string.Format("{0{", text);
string.Format("{1}", text);
string.Format("(0)", text);
string.Format("{0}", text1, text2);
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种在编译时找到这个问题的方法.如果我没记错的话,Resharper发现了一些错误,但它对我的血液来说太丰富了.

c# vsx string-formatting visual-studio

9
推荐指数
1
解决办法
1118
查看次数

Python中嵌套数据结构中的舍入小数

我有一个程序来处理嵌套数据结构,其中底层类型通常最终为小数.例如

x={'a':[1.05600000001,2.34581736481,[1.1111111112,9.999990111111]],...}
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的pythonic方法来打印这样的变量,但将所有浮点数舍入到(例如)3dp并且不假设列表和字典的特定配置?例如

{'a':[1.056,2.346,[1.111,10.000],...}
Run Code Online (Sandbox Code Playgroud)

我想的是 pformat(x,round=3)或许也许

pformat(x,conversions={'float':lambda x: "%.3g" % x})
Run Code Online (Sandbox Code Playgroud)

除了我不认为他们有这种功能.永久舍入基础数据当然不是一种选择.

python printing rounding string-formatting

9
推荐指数
1
解决办法
501
查看次数

带有命名参数的Java字符串模板化器/格式化程序

有没有标准或至少广泛实现的东西String.format,但有命名参数?

我想以这样的方式格式化一个模板化的字符串:

Map<String, Object> args = new HashMap<String, Object>();
args.put("PATH", "/usr/bin");
args.put("file", "foo");
String s = someHypotheticalMethod("#{PATH}/ls #{file}");
// "/usr/bin/ls foo"
Run Code Online (Sandbox Code Playgroud)

从技术上讲,它几乎与:

String[] args = new String[] { "/usr/bin", "foo" };
String s = String.format("%1$s/ls %2$s", args);
// "/usr/bin/ls foo"
Run Code Online (Sandbox Code Playgroud)

但是有了命名参数.

我知道:

但是他们都使用有序或至少编号的参数,而不是命名参数.我知道实现一个是微不足道的,但是我是否正在寻找标准Java库中的机制,或者至少在Apache Commons/Guava /类似的东西中,而不引入高调的模板引擎?

注意:我对真正的模板引擎并不感兴趣,它具有一些命令/功能逻辑,流控制,修饰符,子模板/包含,迭代器等功能.通常,以下方法是一个有效的4行实现 - 这就是我所需要的:

public static String interpolate(String format, Map<String, ? extends Object> args) {
    String out = format;
    for (String arg : args.keySet()) {
        out = Pattern.compile(Pattern.quote("#{" + arg …
Run Code Online (Sandbox Code Playgroud)

java template-engine string-formatting

9
推荐指数
1
解决办法
7264
查看次数

Python:使用变量名称占位符格式化字符串

请考虑以下字符串构建语句:

s="svn cp %s/%s/ %s/%s/" % (root_dir, trunk, root_dir, tag)
Run Code Online (Sandbox Code Playgroud)

使用四个%s可能会令人困惑,所以我更喜欢使用变量名:

s="svn cp {root_dir}/{trunk}/ {root_dir}/{tag}/".format(**SOME_DICTIONARY)
Run Code Online (Sandbox Code Playgroud)

何时root_dir,tag并且trunk在一个类的范围内定义,使用self.__dict__效果很好:

s="svn cp {root_dir}/{trunk}/ {root_dir}/{tag}/".format(**self.__dict__)
Run Code Online (Sandbox Code Playgroud)

但是当变量是本地的时,它们没有在字典中定义,所以我使用字符串连接代替:

s="svn cp "+root_dir+"/"+trunk+"/ "+root_dir+"/"+tag+"/"
Run Code Online (Sandbox Code Playgroud)

我发现这个方法很混乱,但我不知道使用内联局部变量构造字符串的任何方法.

当变量是本地变量时,如何使用变量名构造字符串?

更新:使用该locals()功能完成了诀窍.

请注意,允许混合局部变量和对象变量!例如,

s="svn cp {self.root_dir}/{trunk}/ {self.root_dir}/{tag}/".format(**locals())
Run Code Online (Sandbox Code Playgroud)

python string-formatting iterable-unpacking

9
推荐指数
1
解决办法
1万
查看次数

逐行打印列表元素 - 是否可以使用格式

我非常喜欢用Python打印的新常规 .format()

是否可以使用它逐行打印元素.当然假设元素数量未知.

工作实例将不胜感激.

python string list string-formatting

9
推荐指数
2
解决办法
3万
查看次数

即使第一个是0 vba,也要将数字格式化为两位数

我希望能够使用VBA在1-24之间显示任意数字作为2位数字.显然,唯一有问题的是1-9,我想显示为01,02,03等.有没有办法执行此操作?

excel formatting vba string-formatting excel-vba

9
推荐指数
2
解决办法
6万
查看次数

如何在Python格式字符串中使用点?

我想格式化字符串,并能够使用点操作,这样我就可以构建含有例如模板字符串{user.name},{product.price}.

我试过这个:

'Hello {user.name}'.format( {'user': { 'name': 'Markus' } } )
KeyError: 'user'

'Hello {user.name}'.format( **{'user': { 'name': 'Markus' } } )
AttributeError: 'dict' object has no attribute 'name'
Run Code Online (Sandbox Code Playgroud)

有办法吗?

python string-formatting

9
推荐指数
1
解决办法
5231
查看次数

@ Html.EditorFor DateTime在设置默认值时不显示

我想在Controller中为我的模型设置一个默认值,但它无法在创建页面中显示.

TestModel代码:

public class TestModel
{
    [DataType(DataType.DateTime), Required]
    [DisplayFormat(DataFormatString = "yyyy/MM/dd", ApplyFormatInEditMode = true)]
    public DateTime StartTime { get; set; }

    [DataType(DataType.DateTime), Required]
    [DisplayFormat(DataFormatString = "yyyy/MM/dd", ApplyFormatInEditMode = true)]
    public DateTime EndTime { get; set; }


    public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

控制器代码:

public ActionResult Create()
{
    var model = new TestModel();
    model.StartTime = DateTime.Now;
    model.EndTime = DateTime.Now.AddDays(10);
    model.Description = "This is a default value";
    return View(model);
}
Run Code Online (Sandbox Code Playgroud)

查看页面:

<div class="form-group">
    @Html.LabelFor(model => model.StartTime, htmlAttributes: new { @class …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc model string-formatting data-annotations

9
推荐指数
1
解决办法
9292
查看次数

如何计算c ++ double的有效小数位数?

在Java中处理浮点值时,调用toString()方法会给出一个打印值,该值具有正确的浮点数有效数字.但是,在C++中,通过stringstream打印float会在5位或更少位数后对值进行舍入.有没有办法将C++中的浮点数"漂亮地打印"到(假定的)正确数字的有效数字?


编辑:我想我被误解了.我希望输出是动态长度,而不是固定的精度.我熟悉setprecision.如果你看一下Double的java源代码,它会以某种方式计算有效数字的数量,我真的想了解它是如何工作的和/或在C++中轻松复制它的可行性.

/*
 * FIRST IMPORTANT CONSTRUCTOR: DOUBLE
 */
public FloatingDecimal( double d )
{
    long    dBits = Double.doubleToLongBits( d );
    long    fractBits;
    int     binExp;
    int     nSignificantBits;

    // discover and delete sign
    if ( (dBits&signMask) != 0 ){
        isNegative = true;
        dBits ^= signMask;
    } else {
        isNegative = false;
    }
    // Begin to unpack
    // Discover obvious special cases of NaN and Infinity.
    binExp = (int)( (dBits&expMask) >> expShift );
    fractBits = dBits&fractMask;
    if ( binExp == (int)(expMask>>expShift) ) …
Run Code Online (Sandbox Code Playgroud)

c++ floating-point precision string-formatting

8
推荐指数
1
解决办法
4038
查看次数

python:从字符串模板中提取变量

我熟悉使用模板将变量插入字符串的功能,如下所示:

Template('value is between $min and $max').substitute(min=5, max=10)
Run Code Online (Sandbox Code Playgroud)

我现在想知道的是,是否可以反过来.我想取一个字符串,并使用模板从中提取值,以便我有一些包含提取值的数据结构(最好只是命名变量,但dict很好).例如:

>>> string = 'value is between 5 and 10'
>>> d = Backwards_template('value is between $min and $max').extract(string)
>>> print d
{'min': '5', 'max':'10'}
Run Code Online (Sandbox Code Playgroud)

这可能吗?

python string-formatting

8
推荐指数
1
解决办法
5543
查看次数