标签: string-interpolation

C#从Word创建缩写

给定任何字符串,我想创建一个代表字符串的智能首字母缩略词.如果你们中的任何人使用过JIRA,他们就能很好地完成这项任务.

例如,给定单词: Phoenix它将生成PHX或给出隐私事件管理这个词它将创建PEM.

我有一些代码可以完成后者:

 string.Join(string.Empty, model.Name
                .Where(char.IsLetter)
                .Where(char.IsUpper))
Run Code Online (Sandbox Code Playgroud)

如果只有一个单词及其小写,则此情况不会处理.

但它没有考虑第一种情况.有任何想法吗?我正在使用C#4.5

c# string-interpolation

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

Swift中的字符串插值

swift中的函数采用Swift中的任何数字类型(Int,Double,Float,UInt等).该函数将数字转换为字符串

功能签名如下:

func swiftNumbers <T : NumericType> (number : T) -> String {
    //body
}
Run Code Online (Sandbox Code Playgroud)

NumericType是一种自定义协议,已添加到Swift中的数字类型中.

在函数体内,该数字应转换为字符串:

我使用以下内容

var stringFromNumber = "\(number)"
Run Code Online (Sandbox Code Playgroud)

这不是那么优雅,PLUS:如果数字的绝对值严格低于0.0001则给出:

"\(0.000099)" //"9.9e-05"
Run Code Online (Sandbox Code Playgroud)

或者如果数字是一个大数字:

"\(999999999999999999.9999)" //"1e+18"
Run Code Online (Sandbox Code Playgroud)

有没有办法解决这个字符串插值限制?(不使用Objective-C)

PS:

NumberFormater 也不起作用

import Foundation

let number : NSNumber = 9_999_999_999_999_997

let formatter = NumberFormatter()
formatter.minimumFractionDigits = 20
formatter.minimumIntegerDigits = 20
formatter.minimumSignificantDigits = 40

formatter.string(from: number) // "9999999999999996.000000000000000000000000"

let stringFromNumber = String(format: "%20.20f", number) // "0.00000000000000000000"
Run Code Online (Sandbox Code Playgroud)

string string-interpolation swift

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

R中更好的字符串插值

我需要建立长命令行R并将它们传递给system().我发现使用paste0/paste函数甚至sprintf函数构建每个命令行都非常不方便.是否有更简单的方法:

而不是这个难以阅读和太多的报价:

cmd <- paste("command", "-a", line$elem1, "-b", line$elem3, "-f", df$Colum5[4])
Run Code Online (Sandbox Code Playgroud)

要么:

cmd <- sprintf("command -a %s -b %s -f %s", line$elem1, line$elem3, df$Colum5[4])
Run Code Online (Sandbox Code Playgroud)

我想要这个,可以吗:

cmd <- buildcommand("command -a %line$elem1 -b %line$elem3 -f %df$Colum5[4]")
Run Code Online (Sandbox Code Playgroud)

r string-interpolation

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

存储的字符串,Locale资源文件,使用C#6插值?

使用现有的String.Format,我可以将格式字符串放在数据库或资源文件中,而不是将其硬编码到我的应用程序中.Interpolation有可能吗?

我猜不是,因为它似乎是一个编译器检查的东西.

.net c# string-interpolation c#-6.0

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

是否可以将插值字符串作为参数传递给方法?

我已经开始使用Interpolated Strings(C#6的新功能),它非常有用且优雅.但根据我的需要,我必须将字符串格式作为参数传递给方法.像下一个:

MyMethod(string format)
Run Code Online (Sandbox Code Playgroud)

在过去,我在下一个方面使用它:

MyMethod("AAA{0:00}")
Run Code Online (Sandbox Code Playgroud)

现在我尝试了这段代码:

MyMethod($"AAA{i:00}")
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为它i是在方法内部创建的,并且在此上下文中超出了范围.

是否可以使用任何技巧将插值字符串作为参数传递给方法?

c# string-interpolation c#-6.0

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

如何从python字符串中获取命名变量的名称

有没有一种优雅的方法来获取%s字符串对象的命名类变量的名称?像这样:

string = '%(a)s and %(b)s are friends.'
names = get_names(string)  # ['a', 'b']
Run Code Online (Sandbox Code Playgroud)

已知的替代方式:

  1. 使用正则表达式解析名称,例如:

    import re
    names = re.findall(r'%\((\w)\)[sdf]', string)  # ['a', 'b']
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用.format()兼容的格式和Formatter().parse(string).

    如何从format()方法的字符串中获取变量名称

但是具有%s类变量的字符串怎么样?

PS:python 2.7

python string-interpolation

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

宏和字符串插值(Julia)

假设我创建了这个简单的字符串宏

macro e_str(s)
    return string("I touched this: ",s)
end
Run Code Online (Sandbox Code Playgroud)

如果我将它应用于带插值的字符串,我会得到:

julia> e"foobar $(log(2))"
"I touched this: foobar \$(log(2))"
Run Code Online (Sandbox Code Playgroud)

而我想获得:

julia> e"foobar $(log(2))"
"I touched this: foobar 0.6931471805599453"
Run Code Online (Sandbox Code Playgroud)

我必须对我的宏声明做出哪些更改?

metaprogramming string-interpolation julia

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

C# 中字符串插值内的字符串插值导致编译器错误

以下 C# 表达式会导致我的程序出现编译器错误:

$"Getting image from {location.IsLatitudeLongitude ? $"{location.Latitude} - {location.Longitude}" : location.Location}."
Run Code Online (Sandbox Code Playgroud)

难道不能像这样使用字符串插值吗?或者根本不可能做到这一点?

c# csc string-interpolation

7
推荐指数
1
解决办法
2616
查看次数

C# 在 Razor 中使用字符串插值转义双引号?

我有以下带有三元运算符的剃刀代码来包含或省略 data-* 属性:

 <select class="form-control"
        @(field.DependentDropdown ? $"data-selected={Model.KeyValues.GetValue(field.Name)}" : "")>
Run Code Online (Sandbox Code Playgroud)

当它在 HTML 中呈现时,它是这样的:

<select class="form-control" 
        data-selected="Toyota" yaris="">
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,数据选择属性的值的格式不正确——它应该是用双引号括起来的一个词"Toyota Yaris"

如何正确转义或添加双引号:

 $"data-selected={Model.KeyValues.GetValue(field.Name)}"
Run Code Online (Sandbox Code Playgroud)

c# interpolation string-interpolation razor

7
推荐指数
2
解决办法
6879
查看次数

在 Python 3 中使用用户输入进行字符串格式化的安全方法和实践有哪些?

我的理解

从各种来源,我了解到 Python 3(f 字符串为 3.6+)中有四种主要的字符串格式化/插值技术:

  1. 使用 进行格式化%,与 C 类似printf
  2. 方法str.format()
  3. 格式化字符串文字/f 字符串
  4. string来自标准库模块的模板字符串

我的使用知识主要来自Python String Formatting Best Practices(来源A

  • str.format()是作为 -style 的更好替代品而创建的%,因此后者现在已过时
    • 但是,如果未正确处理用户给定的格式字符串,则str.format()容易受到攻击
  • f 字符串str.format()仅允许字符串文字的类似行为,但编写起来更短,实际上是用于连接的某种程度优化的语法糖
  • 处理用户输入时,模板字符串比str.format()(第一个源中演示的)和其他两种方法(第一个源中隐含的)更安全

据我了解,上述漏洞来自str.format()于可在任何普通字符串上使用的方法,其中定界大括号是字符串数据本身的一部分。包含大括号分隔的替换字段的恶意用​​户输入可以提供给访问环境属性的方法。我相信这与其他格式化方式不同,在其他格式化方式中,程序员是唯一可以向预格式化字符串提供变量的人。例如,f 字符串与 but 具有相似的语法str.format(),因为 f 字符串是文字,并且插入的值是通过类似串联的行为单独计算的,所以它们不容易受到相同的攻击(来源 B)。-formatting%和 Template 字符串似乎也只提供供程序员替换的变量;指出的主要区别是模板的功能更加有限。

我的困惑

我看到很多人都强调其脆弱性,str.format()这让我产生了在使用其他技术时应该警惕什么的问题。来源 A将模板字符串描述为上述方法中最安全的方法,“因为它们降低了复杂性”:

其他字符串格式化技术的更复杂的格式化迷你语言可能会给您的程序带来安全漏洞。

  1. 是的,看起来 f 字符串并不像源 A所暗示的str.format() …

python security user-input string-formatting string-interpolation

7
推荐指数
1
解决办法
2107
查看次数