|
|
1
18
“{0}…{1}…{0}”-需要2个值
例如,在美国英语中,你可能有这样的东西:
在某些文化中,可能不使用中间名,您可能有:
如果你想这样做,你需要寻找格式说明符 即使你今天没有使用length或formatString,未来的开发人员可能会认为添加一个是无害的更改——这会破坏你的代码,这将是一种耻辱。 我会尝试模仿StringBuilder中的代码。AppendFormat(由String.Format调用),即使它有点难看,也可以使用Lutz Reflector来获取此代码。基本上迭代字符串以查找格式说明符,并获取每个说明符的索引值。 |
|
|
2
10
这种方法适用于以下模板:
“{4}aa{0}bb{0},{0}”=>计数=5
|
|
3
8
您始终可以使用Regex:
|
|
|
4
3
|
|
|
5
3
也许你正试图用大锤敲碎一颗坚果? 围绕您对String.Format的调用。 它有点难看,但以一种需要最少努力、最少测试的方式解决了你的问题,并且即使有你没有考虑的其他关于格式化字符串的东西(比如{{文字,或其中包含非数字字符的更复杂的格式字符串:{0:$#,##0.00;($#,###.00);零})也能保证有效 (是的,这意味着您不会检测到比格式说明符更多的数据项,但这是一个问题吗?大概您的软件用户会注意到他们截断了输出并纠正了格式字符串?) |
|
|
6
3
如果模板字符串中没有占位符,Marques的回答将失败。
添加
|
|
|
7
3
问题是在寻找它使用的闭包时。*这允许初始}作为匹配。因此,将其更改为在第一个}处停止,可以使后缀检查工作。换句话说,将其用作正则表达式:
|
|
|
8
3
你可以“滥用”
打印内容:
我意识到我迟到了(几年),但我需要一些与OP要求类似的东西,所以我分享了我在这里提出的解决方案,以防有人发现它有用。.. |
|
9
1
由于我没有编辑帖子的权限,我将提出Marques答案的简短(和正确)版本:
|
|
|
10
1
虽然这不是答案的解决方案,但它是一种变通方法。你可以做
|
|
|
11
1
this answer 大卫·怀特的回答是更新版本:
注意事项:
|
|
|
12
0
|
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |