保持敬畏之心
交易是一场持久战

Pine Script(28):字符串转大写函数 - str.upper()

#Pine Script入门教学

上一节我们学习了str.lower(),它可以将所有字母都转为小写。今天我们来认识它的“兄弟”函数——str.upper()

它的功能正好相反:无论原始文本长什么样,它都会把所有字母强行转换成大写。这两个函数共同构成了我们处理文本大小写问题的“标准化”工具箱。虽然在做不区分大小写的比较时,我们通常习惯于统一转成小写,但有时为了显示统一、或者匹配某些固定为大写的规则,str.upper()同样不可或缺。

str.upper()函数

它的用法和str.lower()完全一样,只是功能相反:str.upper(你要转换的字符串)

函数会返回以下三种可能的结果之一:

  1.  一个全新的、所有字母都转换为大写的新字符串 。例如,str.upper("Sell 10 oil CFDs") 会返回 "SELL 10 OIL CFDS"
  2.  一个与原始字符串完全相同的字符串。这种情况发生在原始字符串里不包含任何字母字符时 。例如,str.upper("84.239") 将简单地返回 "84.239"
  3.  一个空字符串(""。这在两种情况下会发生:当你传入一个空字符串,或者传入了na值时

我们来看一个快速示例。假设我们想将交易品种的描述转换为大写文本:

// 将描述转换大写字母
descUpper = str.upper(syminfo.description)

这里我们使用syminfo.description变量调用了str.upper()函数 。函数返回的大写文本结果会被存储在descUpper变量中 。有了这个变量,我们就可以进行多种操作,比如在图表上创建一个标签来显示它的值

// 创建一个显示大写描述的标签
if barstate.islast
    label.new(bar_index, high, "Description: " + descUpper,
         color=color.black, textcolor=color.white)

str.upper()函数的核心工作就是将文本转换为大写,但它的实用性远不止于此

  • str.lower()一样,它最重要的用途是作为“预处理”工具,实现不区分大小写的比较。在比较两个字符串之前,先用str.upper()将它们都转换为相同的大写形式,就可以消除大小写差异,让比较只关注内容本身
  • 它可以与其他字符串函数协同工作。例如,当str.substring()函数从一个较长的字符串中截取出一个子字符串时,str.upper()可以接着只将这个截取出来的子字符串转换为大写,而保持字符串的其余部分不变
  • 另外,还可以检查整个字符串是否已经是大写形式。要做到这一点,我们可以将原始字符串与str.upper()函数对该字符串进行处理后的结果进行比较。如果两者完全相同,那么就说明原始字符串本身就已经是大写形式了

实战案例

下面的指标展示了如何用str.upper()来清理美股名称中常见的公司后缀,比如“, Inc.”。为了能准确地移除各种大小写形式(如‘Inc’、‘inc’或‘INC’),脚本首先使用str.upper()将描述文本标准化为全大写,然后再进行替换操作

//@version=6
indicator(title="字符串转大写 - 案例", overlay=true)

// 1. 先用转为大写,在用 str.replace() 查找并移除 ", INC."
descCleaned = str.replace(str.upper(syminfo.description), ", INC.", "")

// 2. 对比结果
if barstate.islastconfirmedhistory
    label.new(bar_index + 3, hl2, style=label.style_label_left,
         color=color.navy, textcolor=color.white,
         text="原始描述:\n" + syminfo.description +
         "\n\n清洗并转为大写后:\n" + descCleaned)

这段代码的核心在于str.replace(str.upper(syminfo.description), ", INC.", "")这一行 。程序会先执行最里面的str.upper(),把描述文本“标准化”成全大写 。然后再用str.replace()在标准化的文本里,精确地查找并替换掉大写的", INC."

如果原始描述中不包含该短语,那么descCleaned变量将仅仅包含原始描述的大写形式 在图表上,这个标签会显示交易品种的描述,其中不包含“,Inc.”。对于那些描述中不含这个子字符串的交易品种,唯一的改变就是整个描述会以大写文本显示

下图是特斯拉美股图片,加载这段代码后的提示:
使用Pine脚本str.upper()函数将文本标准化后移除公司后缀的效果图

总结

总结一下,str.upper()str.lower()的功能镜像,是你文本处理工具箱里另一个重要的标准化工具。

  • 它通过将所有字母统一为大写,为后续的文本操作扫清了大小写不一致的障碍。
  • 它只需要一个参数:你希望转换为大写的字符串
  • 它返回的是一个全新的字符串副本,不会改变原始字符串的值
  • str.upper()函数返回的大写字符串,是我们传入的原始字符串的一个副本。这意味着,原始字符串本身并不会被这个函数修改
赞(0)
未经允许不得转载:图道交易 » Pine Script(28):字符串转大写函数 - str.upper()
分享到

评论 抢沙发

登录

找回密码

注册