我在.NET/C#中有一个int,我想转换为特定格式的字符串.
如果值为1,我希望字符串为"001".
10 ="010".
116 ="116".
等等...
我正在寻找字符串格式,但到目前为止还没有成功.我也不会超过999的价值.
是否有任何东西被烘焙成红宝石或铁轨以处理序数格式:'1'为'1st','2'为'2nd'等?
我有一些浮点值我想转换为字符串,我想在转换时保持格式相同,即999.0000(浮点) - > 999.0000(字符串).我的问题是当值包含小数点后的任意数量的零时,如前例所示,它们在转换为字符串时被剥离,因此我实际上最终得到的结果是999.
我查看了MSDN上toString()方法的格式说明符,RoundTrip('R')说明符看起来会产生我想要的,但它只支持Single,Double和BigInt变量.浮点变量是否有这样的格式说明符?或者将值转换为双精度会更容易吗?
更新:为了清楚起见,我想保留尾随零的原因是因为我正在对小数位进行比较,即我正在比较两个值之间小数位后的位数.因此,例如,1.00和1.00000在小数点后具有不同的位数.我知道这是一个奇怪的请求,它是为了工作而且需求来自高位.
更新2-3-11:
我正在考虑这个问题,我正在读取txt文件中的数字,然后将它们解析为浮点数,我将修改程序以检查字符串值是小数还是整数.很抱歉浪费你的时间,虽然这非常有见地.
所有人都喜欢
QString("Put something here %1 and here %2")
.arg(replacement1)
.arg(replacement2);
Run Code Online (Sandbox Code Playgroud)
但是只要你有最微小的机会replacement1实际包含%1甚至是%2任何地方,事情就会变得痒痒.然后,第二个QString::arg()将仅替换重新引入%1或两个%2事件.无论如何,你不会得到"%1"你可能想要的文字.
是否有任何标准技巧可以克服这个问题?
如果你需要一个例子来玩,请拿这个
#include <QCoreApplication>
#include <QDebug>
int main()
{
qDebug() << QString("%1-%2").arg("%1").arg("foo");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这将输出
"foo-%2"
Run Code Online (Sandbox Code Playgroud)
代替
"%1-foo"
Run Code Online (Sandbox Code Playgroud)
可能是预期的(不是).
qDebug() << QString("%1-%2").arg("%2").arg("foo");
Run Code Online (Sandbox Code Playgroud)
给
"foo-foo"
Run Code Online (Sandbox Code Playgroud)
和
qDebug() << QString("%1-%2").arg("%3").arg("foo");
Run Code Online (Sandbox Code Playgroud)
给
"%3-foo"
Run Code Online (Sandbox Code Playgroud) 我最终切换%到.format()2.x代码中的字符串格式化运算符,以便将来更容易迁移到3.x. 有一点令人惊讶的是,不仅%在Py3中保留了样式格式,而且它在标准库代码中被广泛使用.这似乎是合乎逻辑的,因为写作'(%s)' % variable有点短,也许比较容易理解'({})'.format(variable).但我仍有疑问.在代码中使用这两种方法是否合适(pythonic?)?谢谢.
所以我对编程非常陌生,我从Python 3开始.我开始阅读"以艰难的方式学习Python".现在,我得到了一个我有这个代码的地方:
x = "There are %d types of people." % 10
binary = "binary"
do_not = "don't"
y = "Those who know %s and those who %s" % (binary, do_not)
print(x)
print(y)
print("I said: %r") % x
Run Code Online (Sandbox Code Playgroud)
我真的不知道之间的区别%r,%s和%d.我得到的错误是TypeError: unsupported operand type(s) for %: 'NoneType' and 'str'不知道该怎么做以及如何解决它.请解释我如何才能真正使它工作以及为什么它不起作用.另外,%r,d和s之间有什么区别?任何有用的链接?先感谢您.
如何在AS3中使用提供的变量格式化字符串?
//vars
var myNumber:Number = 12;
var myString:String = "Months";
var myObject:MovieClip = year;
//string
myString.txt = "One (?) consists of (?) consecutive (?)", string(myObject), string(myNumber), myString;
Run Code Online (Sandbox Code Playgroud)
所以在上面的字符串中,我希望myString显示"一年由连续12个月组成 ",但我是AS3的新手,并且不知道如何正确格式化字符串.
我确定我必须将数字变量强制转换为字符串,字符串(myNumber),但我不知道是否将影片剪辑变量转换为字符串,字符串(myMovieClip),将返回名称影片剪辑或产生错误.我愿意打赌后来.
我已经将滑块控件的工具提示绑定到它的Value属性,并且我正在尝试使用StringFormat使其显示"当前值{0}为10",其中{0}是Value属性.下面是我尝试解决这个问题时尝试过的各种事情之一.
<Slider.ToolTip>
<Label>
<Label.Content>
<Binding StringFormat="Current Value {0} of 10"
ElementName="DebugLevelSlider"
Path="Value" />
</Label.Content>
</Label>
</Slider.ToolTip>
Run Code Online (Sandbox Code Playgroud)
我有问题在线查找如何使用字符串文字的字符串格式,如上面的我.我看到很多字符串格式的日期/时间/货币格式转换.我认为我有一种方法可以通过多重绑定来实现这一点,但它似乎只是需要额外的工作量.我希望对于字符串文字格式我仍然不必编写自定义转换器.
在我的应用程序中,我发现自己在项目旁边使用了很多额外的标签,因此在stringformat中理解将有希望让我消除一些不必要的标签.
我一直在阅读有关字符串格式的Python 3.2文档,但它并没有真正帮助我解决这个特殊问题.
这是我正在尝试做的事情:
stats = { 'copied': 5, 'skipped': 14 }
print( 'Copied: {copied}, Skipped: {skipped}'.format( stats ) )
Run Code Online (Sandbox Code Playgroud)
上面的代码不起作用,因为format()调用不是读取字典值并使用它们代替我的格式占位符.如何修改我的代码以使用我的字典?
对不起,如果这个问题已经提出,我已经深入搜索,没有任何内容.
现在,我知道:
String.format("%05d", price);
Run Code Online (Sandbox Code Playgroud)
将左边的零填充我的价格,因此25的价格将导致00025
如果我想将它们填充到右边怎么办,结果是25000?如何仅 使用String.format模式执行此操作?