我们必须一直为日志输出构建字符串等等.在JDK版本中,我们学会了何时使用StringBuffer(许多追加,线程安全)和StringBuilder(许多追加,非线程安全).
有什么建议使用String.format()?它是否有效,或者我们是否被迫坚持连接性能很重要的单线?
例如丑陋的旧式,
String s = "What do you get if you multiply " + varSix + " by " + varNine + "?";
Run Code Online (Sandbox Code Playgroud)
与整洁的新风格(可能很慢),
String s = String.format("What do you get if you multiply %d by %d?", varSix, varNine);
Run Code Online (Sandbox Code Playgroud)
注意:我的具体用例是我的代码中的数百个"单行"日志字符串.它们不涉及循环,所以StringBuilder太重量级了.我String.format()特别感兴趣.
java string performance string-formatting micro-optimization
我正试图用一个空格替换多个空格.当我使用时ereg_replace,我收到一个关于它被弃用的错误.
ereg_replace("[ \t\n\r]+", " ", $string);
Run Code Online (Sandbox Code Playgroud)
是否有相同的替代品.我需要用一个" "空格替换多个空格和多个nbsp空格.
有没有什么办法可以指定标准或自定义数字格式字符串来始终输出符号,无论是+ ve还是-ve(尽管它应该为零做什么,我不确定!)
原始问题,但我如何格式化这样的字符串:
"{2}的步骤{1}"
通过使用Java替换变量?在C#中很容易.
Kotlin有一个很棒的功能叫做字符串模板.我真的很喜欢它.
val i = 10
val s = "i = $i" // evaluates to "i = 10"
Run Code Online (Sandbox Code Playgroud)
但是模板中是否可以有任何格式?例如,我想在kotlin中格式化字符串模板中的Double,至少在小数分隔符后设置一些数字:
val pi = 3.14159265358979323
val s = "pi = $pi??" // How to make it "pi = 3.14"?
Run Code Online (Sandbox Code Playgroud) t = e['updated_parsed']
dt = datetime.datetime(t[0],t[1],t[2],t[3],t[4],t[5],t[6]
print dt
>>>2010-01-28 08:39:49.000003
Run Code Online (Sandbox Code Playgroud)
如何将其转换为字符串?:
"January 28, 2010"
Run Code Online (Sandbox Code Playgroud) 在学习Python艰难之路第21页,我看到这个代码示例:
x = "There are %d types of people." % 10
...
print "I said: %r." % x
Run Code Online (Sandbox Code Playgroud)
为什么%r在这里使用而不是%s?你何时使用%r,何时使用%s?
我看到我做不到:
"%b %b" % (True, False)
Run Code Online (Sandbox Code Playgroud)
在Python中.我猜%b对了b(oolean).有这样的事吗?
有没有办法按名称格式化字符串而不是在C#中定位?
在python中,我可以做类似这个例子的事情(从这里无耻地偷走):
>>> print '%(language)s has %(#)03d quote types.' % \
{'language': "Python", "#": 2}
Python has 002 quote types.
Run Code Online (Sandbox Code Playgroud)
有没有办法在C#中做到这一点?比如说:
String.Format("{some_variable}: {some_other_variable}", ...);
Run Code Online (Sandbox Code Playgroud)
能够使用变量名称来做这件事会很好,但字典也是可以接受的.
在Python中,当格式化字符串时,我可以按名称而不是按位置填充占位符,如下所示:
print "There's an incorrect value '%(value)s' in column # %(column)d" % \
{ 'value': x, 'column': y }
Run Code Online (Sandbox Code Playgroud)
我想知道这是否可以用Java(希望没有外部库)?
java ×3
python ×3
string ×3
c# ×2
formatting ×2
.net ×1
.net-3.5 ×1
boolean ×1
datetime ×1
ereg-replace ×1
kotlin ×1
performance ×1
php ×1
regex ×1