标签: string.format

在C#多行逐字字符串中转义string.Format的参数

string template = @"  
          {  
            argument1   = ""{0}"";
            argument2   = {1};  
          }";
Run Code Online (Sandbox Code Playgroud)

当我将它格式化为string.Format的常用字符串时,我自然会得到一个异常,即输入字符串的格式不正确.我尝试转义msdn文档中推荐的参数,比如"{{0}}"甚至"{{{0}}}",但我仍然得到相同的异常.关于如何格式化这样一个字符串的任何想法?

谢谢!

PS [edit]我的原始字符串用于生成WCAT场景文件:

 string scenarioHeaderTemplate = @"
    scenario
    {{
       name    = ""WCAT Scenario"";
       warmup      = {0};
       duration    = {1};
       cooldown    = {2};

       default
       {
           version     = HTTP11;
           setheader
           {
               name    = ""Connection"";
               value   = ""keep-alive"";
           }
           statuscode  = 200;
           close       = ka;
       }
     }}";
Run Code Online (Sandbox Code Playgroud)

如果我尝试string.Format(scenarioHeaderTemplate,10,10,10),它会抛出;

c# string string.format

11
推荐指数
1
解决办法
4945
查看次数

用破折号格式化字符串

我有一个压缩的字符串值,我从导入文件中提取.我需要将其格式化为包裹编号,格式如下:##-##-##-###-###.因此,字符串"410151000640"应变为"41-01-51-000-640".我可以使用以下代码执行此操作:

String.Format("{0:##-##-##-###-###}", Convert.ToInt64("410151000640"));
Run Code Online (Sandbox Code Playgroud)

但是,字符串可能不是所有数字; 它可能有一两个字母,因此转换为int将失败.有没有办法在字符串上执行此操作,以便每个字符(无论是数字还是字母)都能正确地符合格式?

.net c# string.format

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

如何构造WMI查询

我想找到名称以param1开头的结果,并以param2结尾但我的代码不起作用

string wmiQuery = string.Format("SELECT CommandLine FROM Win32_Process WHERE Name LIKE '{0}%' AND Name LIKE '%{1}'", param1, param2);
ManagementObjectSearcher searcher = new ManagementObjectSearcher(wmiQuery);
ManagementObjectCollection retObjectCollection = searcher.Get();
Run Code Online (Sandbox Code Playgroud)

怎么了?

比较

string wmiQuery = string.Format("SELECT CommandLine FROM Win32_Process WHERE Name LIKE '{0}%'", param1);
Run Code Online (Sandbox Code Playgroud)

效果很好

c# wmi string.format .net-4.0 wmi-query

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

如何验证string.Format方法的格式

string.Format具有以下方法签名

string.Format(format, params, .., .. , ..);
Run Code Online (Sandbox Code Playgroud)

我想每次传递自定义格式

string custFormat = "Hi {0} ... {n} ";   // I only care about numbers here, and want avoid  {abdb}
string name = "Foo";

string message = ProcessMessage(custFormat, name);

public string ProcessMessage(custFormat, name)
{
   return string.Format(custFormat, name);
}
Run Code Online (Sandbox Code Playgroud)

我想在传递给ProcessMessage之前验证custFormat中的值以避免异常.

c# string.format

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

用字符串插值替换double String.Format

我尝试将一行使用String.Format两次的代码迁移到新的.NET Framework 6字符串插值功能,但直到现在我还没有成功.

var result = String.Format(String.Format("{{0:{0}}}{1}", 
    strFormat, withUnit ? " Kb" : String.Empty), 
    (double)fileSize / FileSizeConstant.KO);
Run Code Online (Sandbox Code Playgroud)

一个工作的例子可能是:

var result = String.Format(String.Format("{{0:{0}}}{1}", 
   "N2", " Kb"), 1000000000 / 1048576D);
Run Code Online (Sandbox Code Playgroud)

产量:953,67 Kb

这是可能的还是我们需要在这种特殊情况下使用旧结构?

.net c# string.format string-interpolation c#-6.0

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

.NET:是否有String.Format表单用于将对象属性的值插入字符串?

我认为这个问题的直接答案是"不",但我希望有人写了一个真正的简单库来做这件事(或者我可以做到......呃...)

让我用一个例子展示我正在寻找的东西.假设我有以下内容:

class Person {
  string Name {get; set;}
  int NumberOfCats {get; set;}
  DateTime TimeTheyWillDie {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

我希望能够做到这样的事情:

static void Main() {
  var p1 = new Person() {Name="John", NumberOfCats=0, TimeTheyWillDie=DateTime.Today};
  var p2 = new Person() {Name="Mary", NumberOfCats=50, TimeTheyWIllDie=DateTime.Max};

  var str = String.Format(

"{0:Name} has {0:NumberOfCats} cats and {1:Name} has {1:NumberOfCats} cats.  They will die {0:TimeTheyWillDie} and {1:TimeTheyWillDie} respectively
", p1, p2);

  Console.WriteLine(str);
}
Run Code Online (Sandbox Code Playgroud)

有没有人知道是否有这样的格式,或者有人写了一个库来做这件事?我知道它不应该太难,但我宁愿不重新实现轮子.

.net string string.format

8
推荐指数
2
解决办法
2264
查看次数

如何在编译时获取string.format进行抱怨

编译器可以访问格式字符串AND所需的类型和参数.所以我假设有一些方法来指示varargs的缺失参数......即使只是一个案例的子集.是否存在eclipse或其他ide表示传递的varargs可能在运行时导致问题?

java eclipse string.format

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

在java字符串中转义%符号以应用String.format

在我的项目(Java/Play框架)中,我有一个错误处理路由,如果响应是错误代码,则检查来自Web服务的响应,我们显示相应的错误消息,说明用户输入有什么问题,服务检查用户输入有效性.

当用户输入%符号时,由于错误显示逻辑使用,该逻辑会中断

String.format(message, messageArgs);
Run Code Online (Sandbox Code Playgroud)

其中插入了messageArgs介绍它找到%的消息String,如果messageArgs包含%,那么我得到一个异常.

在显示消息之前,我需要清理,转义或以其他方式从用户输入中删除%.

消息:请求的电子邮件地址%s无效messageArgs:orlybg%@gmail.com

有关如何以最简单,最短的方式在Java中执行此操作的任何建议吗?

这是错误日志的一部分

 java.util.UnknownFormatConversionException: Conversion = 'i'
   at java.util.Formatter$FormatSpecifier.conversion(Formatter.java:2646)
   at java.util.Formatter$FormatSpecifier.<init>(Formatter.java:2675)
   at java.util.Formatter.parse(Formatter.java:2528)
   at java.util.Formatter.format(Formatter.java:2469)
   at java.util.Formatter.format(Formatter.java:2423)
   at java.lang.String.format(String.java:2797)
   at controllers.api.PublicAPI.renderAPIError(PublicAPI.java:176)
   at controllers.api.DeviceAPI.setEmailAddress(DeviceAPI.java:736)
   at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:557)
   at play.mvc.ActionInvoker.invoke(ActionInvoker.java:508)
   at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:484)
   at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:479)
   at play.mvc.ActionInvoker.invoke(ActionInvoker.java:161)
   at Invocation.HTTP Request(Play!)
Run Code Online (Sandbox Code Playgroud)

谢谢!

java string string.format input-sanitization

8
推荐指数
3
解决办法
7714
查看次数

解释令人困惑的条件字符串格式

一位前同事写道:

String.Format("{0:#;;} {1:records;no records;record}", rows, rows - 1);
//Rows is a integer value
Run Code Online (Sandbox Code Playgroud)

我读过这些文章

代码项目 - .NET MSDN中的自定义字符串格式
- 自定义数字格式字符串

但我仍然不知道这种格式是如何工作的.显然我可以看到输出,但我不明白这部分{0:#;;}和第二部分.我想做同样的事情来指定年龄(年,年......)

我对这种字符串格式很好奇.有人可以解释这种行为吗?作者不再与我们合作了.

c# formatting string.format

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

Python字符串格式化一个浮点数,如何截断而不是四舍五入

是否有格式选项,以便

>>> '%.1(format)'%2.85
Run Code Online (Sandbox Code Playgroud)

给出'2.8'?

在 Python 2.7 中,'f' 格式四舍五入到最接近的

>>> "{:.0f}".format(2.85)
'3'
>>> "%.0f"%2.85
'3'
>>> "%.1f"%2.85
'2.9'
>>> "%i"%2.85
'2'
Run Code Online (Sandbox Code Playgroud)

python string.format

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