当前位置: 首页 > 工具软件 > Swift Regex > 使用案例 >

SWIFT MX报文基础函数与Java语言中String的方法对照理解

戚育
2023-12-01


前言

随着2012年MX报文的启用,公司部业务类报文也要求从MT转MX进行报文传递。奈何我英语一向不好,只能想法子变通的方式理解转换规则,此处我仅列出我理解的MX函数与Java语言中函数是如何类比理解的,若有偏差还望给位刷到该篇博文的大佬能够在留言区与我一起交流。


一、SWIFT是什么?

SWIFT即Society for Wirldwide Interbank Financial Telecommunications 是环球同业银行金融电讯协会的简称,主要只能是在群求银行系统直接传递结算信息。博主的理解是电讯二字应理解为通讯,那么SWIFT即可理解为通讯平台,类似于微信和QQ,制定相应的通讯规范,那么SWIFT也是为国际电报文制定相应的通讯规范的一种特殊网络环境下的一种通讯工具。

二、SWIFT MX是什么?

SWIFT MX 即SWIFT XML格式的电讯报文。

二、报文基础函数与Java语言中String的方法对照表

函数名称String的方法函数描述示例
AppendTo (Value, Target)tager.concat(String str)将value追加到tager后面AppendTo (“123”, “456”) return "456123 "
AppendToNextLine (Value, Target)(value+tager).toString()将value追加在tager前AppendTo (“123”, “456”) return “123456”
ReturnFirstLineEmpty(Target,n)返回为空的那行的行标ReturnFirstLineEmpty(Target,n) 若n为3,第2行为空则返回2
Concatenate (Value1, Value2, Value3, … ValueN)(Value1, Value2, Value3, … ValueN) .toString()将 Value1, Value2, Value3, … ValueN拼接成一个字符串Concatenate (“1”,“2”, “3”, “n”) return 123n
Copy [(Value)]将值的属性或者路径复制到对应目录Copy [(boolean a)] 若a=false 则return false
DecimalSignificantDigits (Value)将小数点后的有效小数转为十进制数字DecimalSignificantDigits (“123.4560000”) return 456
DeleteChar (Value, FromPosition, ToPosition)删除FromPosition 和ToPsition之间的值DeleteChar (“2”,“123”, “324”) return 14
DeletePattern (Value, Pattern)删除制定的元素DeletePattern (“2”, “123”) return 13
EqualTo (also used “=”)equals(String str)检查两个值是否相等
EquivalentCode (Value, SourceCodeList, TargetCodeList)contains(CharSequence str)字符串或列表中是否包含value如果包含则返回TargetCodeList 如果不包含则返回null若EquivalentCode (“2”, “123”, “234”) return 234 ,若EquivalentCode (“2”, “143”, “234”) return null
ExtractBetweenPattern (Value, FromPattern, {ToPattern1, ToPattern2, … ToPatternN})截取链表中FromPattem到Value之间的值ExtractBetweenPattern (“1”, “2”, {“2341”, “13452”, “234”}) return {“34”,“345”,“”}
ExtractFromPattern (Value, [FromPosition], FromPattern)str.substring(begin + 2, last)如果字符串中包含一个FromPosition 就返回FromPosition如果包含多个FromPosition则返回第一个FromPosition到最后一个FromPosition之间的值若 ExtractFromPattern (“234”, [“2”], “2345”) return 2345 若ExtractFromPattern (“23452”, [“2”], “2345”) return 345
ExtractLines (Value, FromPattern, [ContinuationPattern])String str1 = str.substring(0, str.indexOf(“_”)); String str2 = str.substring(str1.length()+1, str.length());截取字符FromPattern之后的值且字符长度不可超过35若少于35则用ContinuationPattern替换,若超过35则截取为换行符,或找不到FromPattern这个值则返回null若ExtractLines (“22222123222222 33”, “2”, [“3”]) return 222212322222 3 若ExtractLines (“22222123222222 3323”, “2”, [“3”]) return 2222123222222 3 若ExtractLines (“22222123222222333”, “4”, [“3”]) return null
ExtractLinesAsIs(Value, FromPattern, [ContinuationPattern])String str1 = str.substring(0, str.indexOf(“_”)); String str2 = str.substring(str1.length()+1.trim(), str.length())截取字符FromPattern之后的值且字符长度不可超过35若少于35则用ContinuationPattern替换,若超过35则截取为换行符,或找不到FromPattern这个值则返回null 与ExtractLines 不同的是超出换行符的值不能直接替换为空若ExtractLinesAsIs(“22222123222222 33”, “2”, [“3”]) return 2222123222223 若ExtractLinesAsIs(“22222123222222 3323”, “2”, [“3”]) return 22221232222223 若ExtractLinesAsIs(“22222123222222333”, “4”, [“3”]) return null
ExtractPattern (Value, Pattern)int strStartIndex = str.indexOf("U”);int strEndIndex = str.indexOf(“D”);String result = str.substring(strStartIndex, strEndIndex).substring(strStart.length());返回Pattern在value第一次出现的值若ExtractPattern(“USD1500”, “USD”)
ExtractTillPattern (Value, [FromPosition], TillPattern)String str = “ABC/DEF/GHI”; String str1 = str.substring(0, str.indexOf(“/”));在源值中提取一个字符串,直到TillPattern。如果(可选)FromPosition存在,那么该函数将返回从FromPosition开始的源值中的字符串,直到TillPattern。若ExtractTillPattern(ABC/DEF/GHI, “/”)返回字符串ABC 若ExtractTillPattern(ABC/DEF/GHI, 5, “/”)返回字符串DEF返回的字符串不包括TillPattern。
DeleteExtractLines(Value, FromPattern, [ContinuationPattern])从Value中删除使用ExtractLines函数提取的信息若DeleteExtractLines(“22222123222222 3323”, “22222123222222 3323456”, [ExtractLines (“22222123222222 3323”, “2”, [“3”]) ]) return 23456
DeleteLine(Element,LineNumber)在多行元素中,使用LineNumber删除行,并返回删除行并由下一行替换的元素(如果有的话)。若 DeleteLine(“1223”,1) return null
FirstOccurrenceOf (Element)indexOf(String str)返回可能多次出现的元素的第一次出现。若 FirstOccurrenceOf (“123”) return 1
GreaterEqualTo (also used “≥”)“≥”运算符大于等于2 GreaterEqualTo 3 return false
GreaterThan (also used “>”)“>”运算符大于4 GreaterThan 3 return true
Ignore忽略意味着没有对语义单位的翻译。忽略不转换
IsAbsent (Value)检查源值是否缺失或为空。它返回一个布尔值(True或False)。
IsAbsentPattern (Value, Pattern)to_date()检查时间格式是否符合,或者规定的格式是否匹配若IsAbsentPattern(DateTime, “HH:MM:SS.”) return true 若 IsAbsentPattern(DateTime, "T"HH:MM:SS) return false
IsAccount(Value)检查格式是否为账号格式 若value以/CH开头或不以/开头则返回真反之返回假若 IsAccount(“/CH85588”) return ture
IsAlphabetic (Value)isAlphabetic()检查源值的所有字符是否为字母若 IsAlphabetic (“123”) return false
IsAlphabeticOrNumeric (Value)AlphanumericExample检查源值得所有字符是否为数字或字母若IsAlphabeticOrNumeric (“123456www_”) return false
IsBEI (Value)检查源值是否为有效的BEI
IsBIC (Value)检查源值是否为有效的BIC每个银行的BIC不一样,是有效BIC则返回true 反之则返回false
IsCountryCode (Value)检查源值是否为有效的国家代码每个国家的code不一样,是有效CoutryCode则返回true 反之则返回false
IsEmpty (Value)IsEmpty ()检查源值是否为空源值为空则返回ture
IsIBAN (Value)检查源值是否为有效的IBAN (根据ISO标准3166)
IsPresent (Element)IsNotEmpty ()检查元素是否存在且非空。
IsPresentPattern (Value, Pattern)contains(CharSequence s);检查模式是否存在于源值中若 IsPresentPattern(“2007-12-08T23:12:01”, “T”) return ture
Length (Value )Length ()返回源值的长度Length (“123456”) return 6
LessEqualTo (also used “≤”)“≤”运算符小于等于2 LessEqualTo 3 return true
LessThan (also used “<”)“<”运算符小于2 LessThan 3 return true
NumberOfOccurrences (Element)返回源元素的出现次数
OccurrenceOf (Element)返回可以是复杂结构的指定重复源元素的出现号(出现位置)
PadLeft (Value, Character, Length)在获取到指定长度的值之前,返回用指定字符向左侧填充值之后的结果。如果值的长度大于或等于指定的长度,则不添加填充字符。若PadLeft (“123456”, “4”, “1”)return 12
ReplacePattern (Value, Pattern1, Pattern2)str.replaceAll( Pattern1, Pattern2);将源值中的Pattern1替换为Pattern2后返回结果若 ReplacePattern (“123456”, “2”, “6”) return 163456
SecondOccurrenceOf (Element)返回元素的第二个匹配项,该元素可能有多个匹配项。
SignificantDigits (Value)返回源值(十进制)中的有效位数若SignificantDigits (“0120.4560000”) return 6 解析:有效十进制为120.456
SplitInLines (Value, NumberOf Characters, [ContinuationPattern])split(Stringregex)按指定字符数的行拆分源值的结果。如果源值拆分为多行,则该函数会添加回车换行符(CRLF),用于在MT字段中分隔连续行,每行末尾有多行,最后一行除外。在源值拆分为多行的相同情况下,可选的ContinuationPattern(如果存在)将写入第一行之后每行的开头。
StartWith (“Value”)检查函数左边的值是否以模式开始
Stop translation停止翻译
Substring (Value, From Position, [Length])substring(FromPosition,length)返回截取的字符串Substring (“123456”, “3”, [2]) return 45
SumOfOccurrences (Element)返回所有元素源值的和SumOfOccurrences (“123”) return 6
TrimLeft (Value, Character)从值的最左边开始删除指定字符后的结果,直到遇到与字符参数不同的字符为止。若TrimLeft (“1234”, “3”) return 12
TrimRight (Value, Character)删除指定字符后的结果,从值的最右侧开始,直到遇到与字符参数不同的字符为止。若TrimRight (“1234”, “3”) return 34
Truncate(Value, Position )返回位置参数之后的源值截断后的结果若Truncate(“123456”, 3) return 3456
WithinList (Value, CodeList)检查源代码值是否存在于代码列表中

总结

每个MX函数都需要结合相应的注释去理解,如有偏差还望大佬们再评论区帮忙指正,祝愿各位大佬转换报文时都能顺风顺水。

 类似资料: