标签: string.format

String.Format("{0:C2}", - 1234)(货币格式)将负数视为正数

String.Format("{0:C2}", -1234)用来格式化数字.

它总是将数量格式化为正数,而我希望它变为$ - 1234

c# vb.net string.format currency string-formatting

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

在TimeSpan上使用String.Format输出完整的秒数而不是毫秒

我想在字符串中显示两个日期之间的经过时间.

假设我有以下代码:

DateTime date1 = DateTime.Now();
System.Threading.Thread.Sleep(2500);
DateTime date2 = DateTime.Now();

TimeSpan elapsed = date2.substract(date1);
Console.WriteLine("> {0:hh:mm:ss}", elapsed);
Run Code Online (Sandbox Code Playgroud)

我期待的是:

> 00:00:03
Run Code Online (Sandbox Code Playgroud)

我得到了什么:

> 00:00:02.5002500
Run Code Online (Sandbox Code Playgroud)

有没有办法使用String.Format函数只返回完整秒?
我还尝试删除小数位:

elapsed = elapsed.Substract(TimeSpan.FromMiliseconds((double)Timespan.Miliseconds);
Run Code Online (Sandbox Code Playgroud)

但是,自从elapsed以来,这都不起作用.Miliseconds返回500作为整数.

c# string.format timespan

17
推荐指数
4
解决办法
3万
查看次数

如何在.NET 4.0之前将TimeSpan格式化为字符串

我正在使用.NET 3.5编译C#并尝试将TimeSpan转换为字符串并格式化字符串.我想用

myString = myTimeSpan.ToString("c");

但是在TimeSpan.ToString.NET 4.0和我使用.NET 3.5之前,该方法不会将格式字符串作为参数.

那么你如何将TimeSpan格式化为字符串?我的最终目标是以格式显示TimeSpan,hh:mm:ss但目前正在接收hh:mm:ss:fffffff.

我试过用

myString = string.Format("{0:hh:mm:ss}", myTimeSpan);

但是string.Format只是格式化我的DateTime,并且在尝试格式化TimeSpan时传递不同的格式字符串不起作用.

c# string.format timespan tostring .net-3.5

15
推荐指数
1
解决办法
8273
查看次数

String.format和StringBuilder之间的性能

为了连接,String我们经常使用StringBuilder而不是String+ String,但我们也可以String.format通过给定的语言环境,格式和参数来返回格式化的字符串.

例子:

使用StringBuilder连接字符串

String concatenateStringWithStringBuilder(String name, String lName, String nick) {
    final StringBuilder sb = new StringBuilder("Contact {");
    sb.append(", name='").append(name)
      .append(", lastName='").append(lName)
      .append(", nickName='").append(nick)
      .append('}');
    return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)

使用StringFormat连接字符串:

String concatenateStringWithStringFormat(String name, String lName, String nick) {
    return String.format("Contact {name=%s, lastName=%s, nickName=%s}", name, lName, nick);
}
Run Code Online (Sandbox Code Playgroud)

在性能方面,String.Format效率如何StringBuilder?哪一个更好地连接字符串,为什么?

UPDATE

我检查了类似的问题,但没有回答我的问题.到目前为止,我已经习惯StringBuilder连接字符串,我应该使用它吗?或者我应该使用String.format?问题是哪个更好,为什么?

java stringbuilder string.format

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

String.Format vs ToString()

任何人都可以解释以下任何一种方法是否有任何好处:

decimal d = 12.0m;

// 1. how I'd have done it
myLabel.Text = d.ToString();

// 2. how I saw someone do it today
myLabel.Text = String.Format("{0}", d);
Run Code Online (Sandbox Code Playgroud)

只是为了澄清,我不是在质疑这些方法的作用,我显然对此感到高兴,就好像在这个具体的例子中,在一个方面可能有一个性能优势.我知道string.format()提供的文化和格式增加了灵活性,但我总是只是'tostring()'数字来将它们的值附加到标签或一般的基于文本的属性.

对我来说,string.format()选项似乎更多的打字,这里没有额外的好处,但我想知道是否有任何其他'引擎盖'的好处,一种方式与另一种方式.

c# string.format tostring

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

需要使用自定义货币格式与String.Format一起使用

我正在尝试在C#中使用String.Format("{0:c}",somevalue),但我很难搞清楚如何配置输出以满足我的需求.以下是我的需求:

  1. 0输出为空白
  2. 1.00输出到1.00美元
  3. 10.00输出到10.00美元
  4. 100.00输出到$ 100.00
  5. 1000.00输出到$ 1,000.00

我已经尝试过String.Format("{0:c}",somevalue)但是对于零值,它输出$ 0.00这不是我想要的.我也尝试过String.Format("{0:$ 0,0.00; $(0,0.00);#}","somevalue",但对于1.0,它输出$ 01.00.String.Format("{0:$ 0.00; $(0.00);#}",somevalue)适用于大多数情况,但当somevalue为1000.00时,输出为$ 1000.00.

是否有适合所有5个案例的格式?我阅读的所有文档仅详细介绍了基础知识,并未涉及此类方案.

c# string.format currency

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

如何使用string.Format()格式化大括号括起来的十六进制数?

输入: uint hex = 0xdeadbeef;

所需输出: string result = "{deadbeef}"

第一种方法:明确添加{}; 这工作:

result = "{" + string.Format("{0:x}", hex) + "}"; // -> "{deadbeef}"
Run Code Online (Sandbox Code Playgroud)

使用转义大括号输出为十进制而不是十六进制:

result = string.Format("{{{0}}}", hex); // -> "{3735928559}"
Run Code Online (Sandbox Code Playgroud)

似乎很有希望,现在我们需要做的就是:x按照上面的第一种方法添加十六进制说明符:

result = string.Format("{{{0:x}}}", hex); // -> "{x}"
Run Code Online (Sandbox Code Playgroud)

哦,亲爱的,添加它':x已经使它输出"{x}"而不是"{deadbeef}"我想要的.

所以我的问题是:我必须通过显式添加{}按照第一个示例来解决这个问题,或者有没有办法使用复合格式化并转义大括号?

另请注意,这也会影响字符串插值(毕竟)只是由编译器转换为调用string.Format().

(这可能是重复的问题,但到目前为止我一直无法找到重复...)

编辑

c# string.format

13
推荐指数
1
解决办法
1836
查看次数

带有命名参数的vsprintf或sprintf,或PHP中的简单模板解析

我正在寻找一种方法来为或使用命名参数.sprintfprintf

例:

sprintf(
  'Last time logged in was %hours hours, 
   %minutes minutes, %seconds seconds ago'
  ,$hours,$minutes, $seconds
);
Run Code Online (Sandbox Code Playgroud)

或通过vsprintf和一个关联数组.

我在这里找到了一些编码示例

function sprintfn ($format, array $args = array())
Run Code Online (Sandbox Code Playgroud)

http://php.net/manual/de/function.sprintf.php

和这里

function vnsprintf( $format, array $data)
Run Code Online (Sandbox Code Playgroud)

http://php.net/manual/de/function.vsprintf.php

人们写自己的解决方案.

但我的问题是,是否有可能有一个标准的PHP解决方案来实现这一点,还是有另一种方式,也许是由PEAR提供的简单的PHP模板,我可以通过坚持标准的PHP实现这一点?

谢谢你的帮助.

php string.format printf templates named-parameters

12
推荐指数
5
解决办法
2万
查看次数

单数/复数单词的本地化 - 语法数字的不同语言规则是什么?

我一直在开发一个.NET字符串格式库来协助应用程序的本地化.它被称为SmartFormat,在GitHub上是开源的.

它试图解决的一个问题是语法数字.这也被称为"单数和复数形式"或"条件格式",这里有一个英文版的片段:

var message = "There {0:is|are} {0} {0:item|items} remaining";

// You can use the Smart.Format method just like using String.Format:
var output = Smart.Format(CultureInfo.CurrentUICulture, message, items.Count);
Run Code Online (Sandbox Code Playgroud)

我相信英国的规则是,有2种形式(单数和复数)可以应用于名词,动词和形容词.如果数量是1单数,则使用,否则使用复数.

我现在正试图通过实施其他语言的正确规则来"开阔视野"!我已经明白,某些语言最多可以包含4种复数形式,并且需要一些逻辑来确定正确的形式.我想扩展我的代码以适应多种语言.例如,我听说俄语,波兰语和土耳其语的规则与英语完全不同,所以这可能是一个很好的起点.

但是,我只会说英语和西班牙语,那么如何确定许多常用语言的正确语法规则呢?

编辑:我也想知道我的单元测试的一些好的非英语"测试短语":什么是一些非常好的非英语短语,有单数和复数形式可用于测试国际化和本地化库?

.net c# string.format localization internationalization

12
推荐指数
1
解决办法
3651
查看次数

线程"main"中的异常java.util.MissingFormatArgumentException:格式说明符'10s'

毫无疑问,我错过了一些非常明显的东西,但我无法弄明白.任何帮助,将不胜感激.错误来自这里:

package B00166353_Grades;

public class Student{
    String name,banner;

    public Student(String name,String banner){
        this.name=name;
        this.banner=banner;
    }

    public String toString(){
        String productDetails=new String();
        productDetails+=String.format("%-20s%10.2s%10s",this.name,this.banner);
        return productDetails;
    }
}
Run Code Online (Sandbox Code Playgroud)

java string string.format

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