我的Ruby代码中有一个结构,看起来有点像这样
Parameter = Struct.new(:name, :id, :default_value, :minimum, :maximum)
Run Code Online (Sandbox Code Playgroud)
之后,我使用创建此结构的实例
freq = Parameter.new('frequency', 15, 1000.0, 20.0, 20000.0)
Run Code Online (Sandbox Code Playgroud)
在某些时候,我需要这个结构的完全重复,所以我打电话
newFreq = freq.clone
Run Code Online (Sandbox Code Playgroud)
然后,我换了newFreq名字
newFreq.name.sub!('f', 'newF')
Run Code Online (Sandbox Code Playgroud)
奇迹般地改变freq.name了!
像一个简单的任务newFreq.name = 'newFrequency'不会改变freq.
这是应该的方式吗?
编辑:使用类而不是结构和重载clone来制作深层副本是一个好主意吗?
我想基于通配符进行替换.例如,只有当"任期"一词出现在"="符号后面时,才将所有"任期"改为"处置".基本上是一个匹配这个的正则表达式=.*tenure
我这样做的sed命令是:
sed 's/=.*tenure/=.*disposition/g' file.txt
Run Code Online (Sandbox Code Playgroud)
但是,如果我将其传递给包含以下内容的文件:
blah blah blah = change "tenure" to "disposition"
Run Code Online (Sandbox Code Playgroud)
我明白了
blah blah blah =.*disposition" to "disposition"
Run Code Online (Sandbox Code Playgroud)
代替:
blah blah blah = change "disposition" to "disposition"
Run Code Online (Sandbox Code Playgroud)
如何进行替换,使正则表达式中的通配符不会成为目标文件的一部分?
对于数据库程序中的输出,我插入了某些文本以指示粗体或斜体,以及一些替换图像的文本。例如:
“%Important%^所有员工到休息室^”的最终输出应为:
重要事项 所有员工到休息室
我编写了代码来查找周围带有“%”符号和“^”符号的文本,但我现在遇到的问题是文本输出,例如:
%重要% ^所有员工到休息室^
我想删除这些 % 和 ^,同时保留字符串的格式。
这是我一直使用的代码,直到它崩溃:
func processText(inString string: String) -> NSAttributedString {
let pattern = ["(?<=\\^).*?(?=\\^)","(?<=\\%).*?(?=\\%)","\\^", "\\%"]
let italicsRegex = NSRegularExpression(pattern: pattern[0], options: .allZeros, error: nil)
let range = NSMakeRange(0, count(string))
let italicsMatches = italicsRegex?.matchesInString(string, options: .allZeros, range: range) as? [NSTextCheckingResult]
var attributedText = NSMutableAttributedString(string: string)
for match in italicsMatches! {
attributedText.addAttribute(NSFontAttributeName, value: UIFont(name: "Helvetica-Oblique", size: 14.0)!, range: match.range)
}
let boldRegex = NSRegularExpression(pattern: pattern[1], options: .allZeros, error: nil)
let boldMatches …Run Code Online (Sandbox Code Playgroud) 我的data.frame的一列如下所示:
c("BP_1_CSPP", "BP_2_GEGS", "BP_3_AEAG", "BP_4_KPAP", "BP_5_TAKP",
"BP_6_GGDR", "BP_7_MQQP", "BP_8_EEEE", "BP_9_RSDP", "BP_10_APAS",
"BP_11_KRGG", "BP_12_RSQQ", "BP_13_QQLS", "BP_14_EPEV", "BP_15_AAPS",
"BP_16_SDVT", "BP_17_GQQQ", "BP_18_AETP", "BP_19_PPSA", "BP_20_DATP",
"EpQ_1_AYAT", "EpQ_2_HEKL", "EpQ_3_SCSV", "EpQ_4_MAYV", "EpQ_5_LKDP",
"EpQ_6_ERCE", "EpQ_7_DNPA", "EpQ_8_YGIS", "EpQ_9_GMSS", "EpQ_10_AAKK",
"EpQ_11_NIRI", "EpQ_12_ERRR", "EpQ_13_MDRE", "EpQ_14_SRQM", "EpQ_15_DWSI",
"EpQ_16_VLVQ", "EpQ_17_GRTI", "EpQ_18_EKVR", "EpQ_19_PDVA", "EpQ_20_ADVT",
"LbT_1_RPGG", "LbT_2_TQGD", "LbT_3_EVKS", "LbT_4_VIEM", "LbT_5_GSAD",
"LbT_6_VRPI", "LbT_7_CELG", "LbT_8_APQQ", "LbT_9_SAEE", "LbT_10_GEAE",
"LbT_11_EELR", "LbT_12_EWAN", "LbT_13_IKEE", "LbT_14_VSDF", "LbT_15_WEDV",
"LbT_16_SGGA", "LbT_17_KATN", "LbT_18_EREG", "LbT_19_AWAS", "LbT_20_VDRD",
"abc_1_CVTQ", "abc_2_KEAP", "abc_3_TAYI", "abc_4_MITN", "abc_5_MPTV",
"abc_6_TRTG", "abc_7_KSTI", "abc_8_KEAI", "abc_9_HVYS", "abc_10_LGMG",
"abc_11_VAYQ", "abc_12_AGTG", "abc_13_TDSW", "abc_14_HKKS", "abc_15_YGLA",
"abc_16_WEEW", "abc_17_HSTI", "abc_18_EKCI", "abc_19_PAGI", …Run Code Online (Sandbox Code Playgroud) 在红宝石中我可以这样做:
\ndef DNA_strand(dna)\n base_hash = { 'A' => 'T', 'T' => 'A', 'G' => 'C', 'C' => 'G' }\n dna.gsub(/[ATGC]/, base_hash)\nend\nRun Code Online (Sandbox Code Playgroud)\n我也可以这样做,这将是完全相同的:
\ndef DNA_strand(dna)\n Dna.tr(\xe2\x80\x99ACTG\xe2\x80\x99, \xe2\x80\x99TGAC\xe2\x80\x99)\nend\nRun Code Online (Sandbox Code Playgroud)\n在JS中是否有与ruby中的:tr等效的方法?
\n目前我只能想到用JS这样解决这个问题:
\nfunction DNAStrand(dna){\n function matchBase(match, offset, string) {\n const base = { 'A': 'T', 'T': 'A', 'G': 'C', 'C': 'G' };\n return `${base[match]}`;\n }\n return dna.replace(/[ATGC]/g, matchBase);\n}\nRun Code Online (Sandbox Code Playgroud)\n任何意见将不胜感激!
\nmy_string = 'Here's the #: 49848! - but will dashes, commas & stars (*) show?'
puts src.gsub(/\d|\W/, "")
Run Code Online (Sandbox Code Playgroud)
即我可以删除或("|").
这是我如何到达这里,我可以变短吗?
src = "Here's the #: 49848! - but will dashes, commas & stars (*) show?"
puts "A) - " + src
puts "B) - " + src.gsub(/\d\s?/, "")
puts "C) - " + src.gsub(/\W\s?/, "")
puts "D) - " + src.gsub(/\d|\W\s?/, "")
puts "E) - " + src.gsub(/\d|\W/, "")
puts "F) - " + src
A) - Here's the #: …Run Code Online (Sandbox Code Playgroud) 我正在尝试从交换网络套接字获取一些贸易信息。在我从套接字获取的 JSON 中,值 .p 和 .q 都用双引号括起来。
当我尝试将两个值相乘时,它表示我正在尝试将两个字符串相乘。因此,我通过 tonumber 过滤器传递这些字符串,并且错误消息发生了一些变化,但无法让它真正工作。
JSON:
{"e":"aggTrade","E":1562109562958,"s":"BTCUSDT","a":134343336,"p":"10796.60000000","q":"0.00139000","f":147532295,"l":147532295,"T":1562109562951,"m":false,"M":true}
Run Code Online (Sandbox Code Playgroud)
下面的命令后面是它们的输出:
... | jq '"\(.p*.q)"'
jq: error (at <stdin>:1): string ("10796.6000...) and string ("0.00139000") cannot be multiplied
Run Code Online (Sandbox Code Playgroud)
然后:
... | jq '"\(.p|tonumber*.q|tonumber)"'
jq: error (at <stdin>:1): Cannot index string with string "q"
Run Code Online (Sandbox Code Playgroud)
... | jq '"\("\(.p|tonumber)"*"\(.q|tonumber)")"'
jq: error (at <stdin>:1): string ("10796.6") and string ("0.00139") cannot be multiplied
Run Code Online (Sandbox Code Playgroud)
我得到的最接近的是下面的代码,但它输出了很多页结果,而我只期望一个结果......
... | jq '.q as $qtty | "\(.p|tonumber*$qtty|tonumber)"'
Run Code Online (Sandbox Code Playgroud)
或者:
... | jq '.q as $qtty | "\(.p|tonumber*"\($qtty|tonumber)")"'
Run Code Online (Sandbox Code Playgroud)
它输出的数字太多了!
即使使用 …
我想在某个关键字后删除字符串的所有元素.示例:
this.is.an.example.string.that.I.have
Run Code Online (Sandbox Code Playgroud)
期望的输出:
This.is.an.example
Run Code Online (Sandbox Code Playgroud)
我尝试过使用gsub('string', '', list)但只删除单词字符串.我也试过使用,gsub('^string', '', list)但似乎也没有用.
谢谢.
我需要作为 bash 脚本的参数给出的文件的基本名称。基本名称应去掉其文件扩展名。让我们假设$1 = "/somefolder/andanotherfolder/myfile.txt",期望的输出是"myfile"。
当前的尝试创建了一个我想避免的中间变量:
BASE=$(basename "$1")
NOEXT="${BASE%.*}"
Run Code Online (Sandbox Code Playgroud)
我尝试将其作为单行代码,通过管道输出 basename 的输出。但是,我不知道如何将标准输出传输到字符串替换。
编辑:这需要适用于可能具有不同长度的多个文件扩展名,因此字符串替换尝试如上所述。
我正在尝试在将Perl脚本移植到Ruby的过程中弄清楚如何进行字符串替换.
这是Perl系列.我想弄清楚Ruby的等价物:
$historyURL =~ s/COMPONENT_NAME/$componentName/g;
Run Code Online (Sandbox Code Playgroud)
对于那些可能知道Ruby而不是Perl的人来说,这行基本上用变量$historyVariable的值替换字符串"COMPONENT_NAME" $componentName.