文章目录

  • 第六十六章 Caché 函数大全 $TRANSLATE 函数
  • 大纲
    • 参数
  • 描述
    • `$TRANSLATE`和`$REPLACE`
  • 示例

第六十六章 Caché 函数大全 $TRANSLATE 函数

返回一个新字符串,该字符串包含源字符串的逐字符替换。

大纲

$TRANSLATE(string,identifier,associator)
$TR(string,identifier,associator)

参数

  • string 源字符串。它可以是数值,字符串文字,变量名称或任何有效的ObjectScript表达式。
  • identifier 由一个或多个要在字符串中搜索的字符组成的字符串。它可以是数字值,字符串文字,变量名称或任何有效的ObjectScript表达式。
  • associator 可选-由一个或多个替换字符组成的字符串,这些字符在位置上对应于标识符中的每个字符。它可以是数值,字符串文字,变量名称或任何有效的ObjectScript表达式。

描述

$TRANSLATE函数返回一个新字符串,该字符串包含源字符串的逐字符替换。 $TRANSLATE操作可以替换多个不同的字符,但是只能(最多)用一个字符替换一个字符。它一次处理一个字符串字符的字符串参数。它将输入字符串中的每个字符与标识符参数中的每个字符进行比较。如果$TRANSLATE找到一个匹配项,它将对该字符执行以下操作之一:

  • $TRANSLATE的两参数形式从返回的字符串中删除标识符参数中的那些字符。

  • $TRANSLATE的三参数形式将字符串中找到的标识符字符替换为关联参数中位置上对应的字符,并返回结果字符串。替换是基于字符而不是字符串执行的。如果identifier参数包含的字符少于associator参数,则忽略associator参数中多余的字符。如果标识符参数包含的字符比关联器参数更多,则标识符参数中多余的字符将在输出字符串中删除。

$TRANSLATE区分大小写。

字符串,标识符和关联器参数通常指定为带引号的字符串。如果这些参数之一的值是纯数字,则不需要字符串引号;但是,由于Caché在将参数值提供给$TRANSLATE之前会将参数值转换为规范数,因此不建议使用此用法。

$TRANSLATE$REPLACE

$TRANSLATE执行字符对字符的匹配和替换。 $REPLACE执行字符串对字符串的匹配和替换。 $REPLACE可以将一个或多个字符的单个指定子字符串替换为另一个子字符串,或者删除指定子字符串的多个实例。 $TRANSLATE可以用对应的指定替换字符替换多个指定字符。

$TRANSLATE匹配始终区分大小写; $REPLACE匹配默认情况下区分大小写,但可以不区分大小写地调用。 $TRANSLATE始终替换源字符串中的所有匹配项; $REPLACE可以指定匹配的起点和/或要执行的替换次数。

示例

以下示例显示了使用$TRANSLATE的两种方法。第一个$TRANSLATE不会更改输入字符串的值。第二个$TRANSLATE通过将输入字符串值设置为等于函数的返回值来更改它:


/// d ##class(PHA.TEST.Function).TRANSLATE()
ClassMethod TRANSLATE()
{SET str="The quick brown fox"SET newstr=$TRANSLATE(str,"qbf","QBF")WRITE "source string: ",str,!,"new string: ",newstr,!!// 创建一个新的字符串,不更改str值SET str=$TRANSLATE(str,"qbf","QBF")WRITE "revised string: ",str// 创建一个新的字符串并将字符串替换为新的字符串值
}
DHC-APP>d ##class(PHA.TEST.Function).TRANSLATE()
source string: The quick brown fox
new string: The Quick Brown Foxrevised string: The Quick Brown Fox

在下面的示例中,两个参数$TRANSLATE基于当前语言环境的设置删除数字组分隔符:

/// d ##class(PHA.TEST.Function).TRANSLATE1()
ClassMethod TRANSLATE1()
{AppropriateInputSET ds=##class(%SYS.NLS.Format).GetFormatItem("DecimalSeparator")w "ds ",ds,!IF ds="." {SET x="+1,462,543.33"} ELSE {SET x="+1.462.543,33"}
TranslateNumWRITE !,"before translation ",x,!SET ngs=##class(%SYS.NLS.Format).GetFormatItem("NumericGroupSeparator")w "ngs ",ngs,!IF ngs=","     {SET x=$TRANSLATE(x,",") } ELSEIF ngs="." {SET x=$TRANSLATE(x,".") } ELSEIF ngs=" " {SET x=$TRANSLATE(x," ") } ELSE {WRITE "Non-standard NumericGroupSeparator:", ngsRETURN }WRITE !,"after translation  ",x
}
DHC-APP>d ##class(PHA.TEST.Function).TRANSLATE1()
ds .before translation +1,462,543.33
ngs ,after translation  +1462543.33

在下面的示例中,三参数$TRANSLATE用斜杠替换了各种Date Separator字符。请注意,关联者必须指定“/”和标识符中的字符数一样多:

/// d ##class(PHA.TEST.Function).TRANSLATE2()
ClassMethod TRANSLATE2()
{SET x(1)="06-23-2014"SET x(2)="06.24.2014"SET x(3)="06/25/2014"SET x(4)="06|26|2014"SET x(5)="06 27 2014"FOR i=1:1:5{SET x(i)=$TRANSLATE(x(i),"- .|","")WRITE "x(",i,") :",x(i),!}
}
DHC-APP>d ##class(PHA.TEST.Function).TRANSLATE2()
x(1) :06/23/2014
x(2) :06/24/2014
x(3) :06/25/2014
x(4) :06/26/2014
x(5) :06/27/2014

在以下示例中,三参数$TRANSLATE通过将重音字母替换为非重音字母并删除问题和感叹词前缀标点来将西班牙语“简化”为基本ASCII

/// d ##class(PHA.TEST.Function).TRANSLATE3()
ClassMethod TRANSLATE3()
{SET esp="¿Sabes lo que ocurrirá en el año 2016?"WRITE "Spanish:",!,esp,!SET iden=$CHAR(225)_$CHAR(233)_$CHAR(237)_$CHAR(241)_$CHAR(243)_$CHAR(250)_$CHAR(161)_$CHAR(191)SET asso="aeinou"WRITE "Identifier: ",iden,!WRITE "Associator: ",asso,!SET spanglish=$TRANSLATE(esp,iden,asso)WRITE "Spanglish:",!,spanglish
}
DHC-APP>d ##class(PHA.TEST.Function).TRANSLATE3()
Spanish:
??Sabes lo que ocurrirá en el a??o 2016?
Identifier: áéí??óú????
Associator: aeinou
Spanglish:
Sabes lo que ocurrira en el ano 2016?

不用说,这不是推荐用于实际西班牙语文本的转换。

第六十六章 Caché 函数大全 $TRANSLATE 函数相关推荐

  1. 第六十九章 Caché 函数大全 $WCHAR 函数

    文章目录 第六十九章 Caché 函数大全 $WCHAR 函数 大纲 参数 描述 第六十九章 Caché 函数大全 $WCHAR 函数 返回与识别代理项对的数字代码对应的字符. 大纲 $WCHAR(e ...

  2. 第六十四章 Caché 函数大全 $STACK 函数

    文章目录 第六十四章 Caché 函数大全 $STACK 函数 大纲 参数 描述 `$ECODE` 与 `$STACK` `$STACK`的单参数形式 `$STACK`的两个参数形式 示例 注意 跨命 ...

  3. 第六十九章 SQL函数 JSON_OBJECT

    文章目录 第六十九章 SQL函数 JSON_OBJECT 大纲 参数 描述 选择模式和排序 ABSENT ON NULL 示例 第六十九章 SQL函数 JSON_OBJECT 将数据作为JSON对象返 ...

  4. 第六十二章 SQL函数 HOUR

    文章目录 第六十二章 SQL函数 HOUR 大纲 描述 示例 第六十二章 SQL函数 HOUR Time函数,它返回DateTime表达式的小时数. 大纲 {fn HOUR(time-expressi ...

  5. 第六十四章 SQL函数 INSTR

    文章目录 第六十四章 SQL函数 INSTR 大纲 参数 描述 INSTR, CHARINDEX, POSITION和$FIND 示例 第六十四章 SQL函数 INSTR 返回子字符串在字符串中的位置 ...

  6. 第六十六章 SQL函数 ISNULL

    文章目录 第六十六章 SQL函数 ISNULL 大纲 参数 描述 日期和时间显示转换 比较的NULL处理函数 示例 第六十六章 SQL函数 ISNULL 测试NULL并返回相应表达式的函数. 大纲 I ...

  7. linux i2c adapter 增加设备_「正点原子Linux连载」第六十二章Linux SPI驱动实验(一)...

    1)实验平台:正点原子Linux开发板 2)摘自<正点原子I.MX6U嵌入式Linux驱动开发指南>关注官方微信号公众号,获取更多资料:正点原子 第六十二章Linux SPI驱动实验 上一 ...

  8. 【正点原子Linux连载】第六十二章 Linux SPI驱动实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  9. 【正点原子Linux连载】第六十四章 Linux 多点电容触摸屏实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

最新文章

  1. CVPR 2022 | 南开程明明团队和天大提出LD:目标检测的定位蒸馏
  2. 出道50+年!乘风破浪的编程语言们,能二次翻红吗?
  3. puppet安装与配置
  4. Win10 通过cmd查看端口占用、相应进程、杀死进程等的命令
  5. JS中获得窗口属性的方法
  6. java标注释_跪请JAVA高手帮忙标一下注释
  7. Java8 HashMap源码分析
  8. Bash脚本教程之基本语法
  9. C++基本数据类型列表
  10. python 用mysqldb方式操作数据库
  11. Jquery实现图片的预加载与延时加载
  12. matlab盒子分形维数_根据计盒维数原理求一维曲线分形维数的matlab程序
  13. iphone6 计算机无法检测到照相机,爱思助手无法识别设备怎么办 爱思助手无法识别设备解决方法...
  14. unity 3d水的资源包_使用Apple LiDAR,一小时为你家量身打造3D游戏
  15. 国家一级建造师——工程经济——第一章——第二节
  16. 斐讯n1驱动是android,在线云编译斐讯N1的openwrt固件(带WiFi驱动,带emmc写入)教程...
  17. 手机锁屏后有时收不到微信通知,有时又能收到是怎么回事?
  18. 【尽快更换Aegisub 3.3.2】记录一下关于win10更新给Aegisub 3.2.2带来的影响
  19. matlab 堆排序
  20. 使用Falcon对三代测序进行基因组组装

热门文章

  1. 神经网络分类算法是什么,神经网络分类算法简介
  2. 北京革新创展科技有限公司-BICE-EDA存储器设计实验(实验3.1 存储器设计实验)
  3. Re 从零开始的C++之路(四)容器和迭代器
  4. spring集成kafka运行时报错:Failed to construct kafka producer] with root cause
  5. java数据算法,验证身份证号码的合法性
  6. 鼠标跟计算机的USB设备运行不正常,为什么鼠标跟这台计算机连接的一个USB设备运行不正常,windo? 爱问知识人...
  7. hdu 5238 Calculator(线段树+中国剩余定理)
  8. 慕尼黑大学计算机语言学,慕尼黑大学,斯图加特大学和萨尔大学的计算语言学硕士如何选择?...
  9. Hello Playwright:(8)等待页面加载
  10. 使用mysql workbench显示Tables/Views could not be fetched