这就是我所知道的
str = String.Format("Her name is {0} and she's {1} years old", "Lisa", "10");
Run Code Online (Sandbox Code Playgroud)
但我想要类似的东西
str = String("Her name is @name and she's @age years old");
str.addParameter(@name, "Lisa");
str.addParameter(@age, 10);
Run Code Online (Sandbox Code Playgroud) 使用{}而不是字符串连接有什么好处吗?
来自slf4j的一个例子
logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT);
Run Code Online (Sandbox Code Playgroud)
代替
logger.debug("Temperature set to"+ t + ". Old temperature was " + oldT);
Run Code Online (Sandbox Code Playgroud)
我认为这是关于速度优化的,因为根据配置文件,可以在运行时避免参数评估(和字符串连接).但是只有两个参数是可能的,那么有时除了字符串连接之外别无选择.需要就此问题提出意见.
我从数据库中获取结果,并希望将数据作为Java的标准输出中的表输出
我尝试过使用\ t但是我想要的第一列长度变化很大.
有没有办法在像输出这样漂亮的表中显示它?
我正在编写一个WPF程序,我试图通过一些可重复的方法(如样式或模板)找出一种在TextBox中格式化数据的方法.我有很多TextBoxes(确切地说是95),每一个都绑定到自己的数值数据,每个数据都可以定义自己的分辨率.例如,如果数据为99.123,分辨率为2,则应显示99.12.同样,数据值99和分辨率3应显示为99.000(而不是99).有没有办法做到这一点?
编辑: 我应该澄清一下,我正在处理的当前屏幕上有95个TextBox,但我希望程序中各个屏幕的每个TextBox都能显示正确的小数位数.现在我考虑一下,其中一些是TextBoxes(就像我现在正在处理的屏幕),有些是DataGrids或ListViews,但是如果我能弄清楚如何使它适用于TextBoxes我敢肯定我可以想象它也用于其他控件.
在这种情况下,没有太多的代码可以共享,但我会尝试使其更清晰:
我有一个View Model,它包含以下属性(vb.net):
Public ReadOnly Property Resolution As Integer
Get
Return _signal.DisplayResolution
End Get
End Property
Public ReadOnly Property Value As Single
Get
Return Math.Round(_signal.DisplayValue, Resolution)
End Get
End Property
Run Code Online (Sandbox Code Playgroud)
在XAML中我有:
<UserControl.Resources>
<vm:SignalViewModel x:Key="Signal" SignalPath="SomeSignal"/>
</UserControl.Resources>
<TextBox Grid.Column="3" IsEnabled="False" Text="{Binding Path=Value, Source={StaticResource Signal}, Mode=OneWay}" />
Run Code Online (Sandbox Code Playgroud)
EDIT2(我的解决方案): 事实证明,在离开电脑一段时间之后,我回来找到一个简单的答案,盯着我的脸.格式化视图模型中的数据!
Public ReadOnly Property Value As String
Get
Return (Strings.FormatNumber(Math.Round(_signal.DisplayValue, _signal.DisplayResolution), _signal.DisplayResolution))
End Get
End Property
Run Code Online (Sandbox Code Playgroud) 我正在尝试找到格式化SQL查询字符串的最佳方法.当我调试我的应用程序时,我想记录所有sql查询字符串,并且正确格式化字符串很重要.
选项1
def myquery():
sql = "select field1, field2, field3, field4 from table where condition1=1 and condition2=2"
con = mymodule.get_connection()
...
Run Code Online (Sandbox Code Playgroud)
选项2
def query():
sql = """
select field1, field2, field3, field4
from table
where condition1=1
and condition2=2"""
con = mymodule.get_connection()
...
Run Code Online (Sandbox Code Playgroud)
这里的代码很清楚,但是当你打印sql查询字符串时,你会得到所有这些烦人的空白区域.
你从表\n _ ___ 中选择field1,field2,field3,field4 \n_ _ ___ ,其中condition1 = 1 \n _ ___ _和 condition2 = 2'
注意:我已经用下划线替换了空格_,因为它们是由编辑器修剪的
选项3
def query():
sql = """select field1, field2, field3, field4
from table …Run Code Online (Sandbox Code Playgroud) 你能用str.format函数显示带前导零的整数值吗?
输入示例:
"{0:some_format_specifying_width_3}".format(1)
"{0:some_format_specifying_width_3}".format(10)
"{0:some_format_specifying_width_3}".format(100)
Run Code Online (Sandbox Code Playgroud)
期望的输出:
"001"
"010"
"100"
Run Code Online (Sandbox Code Playgroud)
我知道,无论zfill和%基于格式(如'%03d' % 5)可以做到这一点.但是,我想要一个解决方案,用于str.format保持我的代码干净和一致(我也使用datetime属性格式化字符串),并扩展我对格式规范迷你语言的了解.
使用String.Format()它可以以DateTime许多不同的方式格式化例如对象.每当我寻找所需的格式时,我都需要在互联网上搜索.我几乎总能找到一个可以使用的例子.例如:
String.Format("{0:MM/dd/yyyy}", DateTime.Now); // "09/05/2012"
Run Code Online (Sandbox Code Playgroud)
但我不知道它是如何工作的以及哪些类支持这些"魔术"附加字符串.
所以我的问题是:
String.Format将附加信息映射MM/dd/yyyy到字符串结果?String.Format("{0:MyCustomFormat}", new MyOwnClass())在PHP中,我可以执行以下操作:
$name = 'John';
$var = "Hello {$name}"; // => Hello John
Run Code Online (Sandbox Code Playgroud)
C#中是否有类似的语言结构?
我知道有,String.Format();但我想知道是否可以在不调用字符串上的函数/方法的情况下完成.
我使用python 2.7.3的日志工具.这个Python版本的文档说:
日志包提前更新格式化选项,如str.format()和string.Template.支持这些较新的格式化选项...
我喜欢花括号的"新"格式.所以我想尝试做类似的事情:
log = logging.getLogger("some.logger")
log.debug("format this message {0}", 1)
Run Code Online (Sandbox Code Playgroud)
并得到错误:
TypeError:并非在字符串格式化期间转换所有参数
我想念的是什么?
PS我不想用
log.debug("format this message {0}".format(1))
Run Code Online (Sandbox Code Playgroud)
因为在这种情况下,无论记录器级别如何,都始终格式化消息.
我最近遇到了这个TypeError异常,我发现很难调试.我最终将它减少到这个小测试用例:
>>> "{:20}".format(b"hi")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: non-empty format string passed to object.__format__
Run Code Online (Sandbox Code Playgroud)
无论如何,这对我来说非常不明显.我的代码的解决方法是将字节字符串解码为unicode:
>>> "{:20}".format(b"hi".decode("ascii"))
'hi '
Run Code Online (Sandbox Code Playgroud)
这个例外是什么意思?有没有办法让它更清晰?
python ×4
string ×4
c# ×3
.net ×2
python-2.7 ×2
data-binding ×1
java ×1
logging ×1
optimization ×1
python-3.x ×1
slf4j ×1
sql ×1
tabular ×1
vb.net ×1
wpf ×1
xaml ×1