neo4j字符串操作大全

1. 字符串基本操作函数

  • 1.1 空格删除
  • 1.2 文本替换 replace()
  • 1.3 文本反转reverse()
  • 1.4 文本截取
  • 1.5 文本拆分 split()

2. 字符串匹配筛选

3. apoc 包的字符串操作函数

4. 字符串操作符

5. 参考资料

字符串基本操作函数

函数 函数用途
lTrim() 删除字符串左边多余的空格
rTrim() 删除字符串右边多余的空格
trim() 删除字符串左右两边多余的空格
replace() 替换字符串
reverse() 将字符串的顺序反过来
left() 从左往右获取字符串
right() 从右往左获取字符串
split() 剪切字符串
substring() 从字符串中获取某一部分字符串
toLower() 将所有字母转换成小写字母
toUpper() 将所有字母转换成大写字母
toString() 将格式转换成字符串

空格删除

lTrim()

删除字符串左边多余的空格

RETURN lTrim('   hello')

结果
"hello"

rTrim()

删除字符串右边多余的空格

RETURN rTrim('hello   ')

结果
"hello"

trim()

删除字符串左右两边多余的空格

RETURN trim('   hello   ')

结果
"hello"

文本替换 replace()

返回一个字符串,其中原始字符串中所有出现的指定字符串都已被另一个(指定)字符串替换。
语法:

replace(original, search, replace)

参数

参数 描述
orginal 要返回的字符串
search 指定orginal字符串中哪些字符需要替换
replace 替换文本
RETURN replace("hello", "l", "w")

结果
"hewwo"

文本反转 reverse()

reverse()将原始字符床中所有字符的顺序都颠倒

RETURN reverse('anagram')

结果
"margana"

文本截取

left()

返回一个从原始字符串最左边到指定数量的字符串

RETURN right('hello', 3)

结果
"hel"

right()

返回一个从原始字符串最右边到指定数量的字符串

RETURN right('hello', 3)

结果
"llo"

substring()

返回一个从指定开始位置并返回指定长度的一个字符串。

RETURN substring('hello', 1, 3)

结果
"ell"

RETURN substring('hello', 2)

结果
"llo"

文本拆分 split()

split()

原始字符串在指定的界限字符周围拆分产生并返回一个字符串列表。

RETURN split('one,two', ',')

结果
["one","two"]

字符串匹配筛选

STRATS WITH 匹配开头文本

STRATS WITH运算符用于匹配字符串开头的文本,会区分大小写

MATCH (n)
WHERE n.name STARTS WITH 'Pet'
RETURN n.name

结果返回以含有Pet开头的人名 "Peter"

ENDS WITH 匹配结尾文本

ENDS WITH 运算符用于匹配字符串末尾的文本,也是区分大小写的。

MATCH (n)
WHERE n.name ENDS WITH 'ter'
RETURN n.name

结果返回以ter结尾的人名 Peter

CONTAINS 匹配包含文本

CONTAINS 运算符用来查找一个文本字符串中是否还有指定的字符串

MATCH (n)
WHERE n.name CONTAINS 'ete'
RETURN n.name

结果返回包含ete的人名

字符串匹配否定

使用NOT从结果中排除给定字符串的所有匹配项

MATCH (n)
WHERE NOT n.name ENDS WITH 'y'
RETURN n.name

结果返回所有节点的名称中不以y结尾的节点。

使用正则表达式进行匹配

cypher的正则表达式语法是从Java正则表达式继承过来的。

常见的有:

  • (?i) 不区分大小写
  • (?s) 多行
  • (?m) dotall

如:使用匹配正则表达式=~ 'regexp', 查询以Tim开头的名称

MATCH (n)
WHERE n.name =~ 'Tim.*'
RETURN n.name

apoc 包的字符串操作函数

函数 函数描述
apoc.text.indexOf(text, lookup, offset=0, to=-1==len) 查找文本中查找字符串的第一次出现,从包含(包括)到排除(exclusive),如果未找到则为-1,如果text为null,则为null。
apoc.text.indexesOf(text, lookup, from=0, to=-1==len) 查找文本中所有出现的查找字符串,返回列表,从包含列表到排除列表,如果找不到,则为空列表,如果text为null,则返回null。
apoc.text.replace(text, regex, replacement) 将给定字符串中与给定正则表达式匹配的每个子字符串替换为给定替换。
apoc.text.regexGroups(text, regex) 返回一个包含每个匹配的嵌套数组的数组。内部数组包含所有匹配组。
apoc.text.join(['text1','text2',…​], delimiter) 用给定的分隔符连接给定的字符串。
apoc.text.format(text,[params],language) sprintf使用给定的参数和可选的参数语言格式化字符串(默认值为'en')。
apoc.text.lpad(text,count,delim) 左垫字符串到给定的宽度
apoc.text.rpad(text,count,delim) 右垫字符串到给定的宽度
apoc.text.random(length, [valid]) 返回指定长度的随机字符串
apoc.text.capitalize(text) 大写单词的第一个字母
apoc.text.capitalizeAll(text) 大写每个单词的第一个字母
apoc.text.decapitalize(text) 将单词的第一个字母大写
apoc.text.decapitalizeAll(text) 将所有单词的首字母大写
apoc.text.swapCase(text) 交换字符串的大小
apoc.text.camelCase(text) 将字符串转换为camelCase
apoc.text.upperCamelCase(text) 将字符串转换为UpperCamelCase
apoc.text.snakeCase(text) 将字符串转换为蛇形
apoc.text.toUpperCase(text) 将字符串转换为UPPER_CASE
apoc.text.charAt(text, index) 返回给定索引处字符的十进制值
apoc.text.code(codepoint) 返回给定代码点的unicode字符
apoc.text.hexCharAt(text, index) 返回给定索引处字符的十六进制值字符串
apoc.text.hexValue(value) 返回给定值的十六进制值字符串
apoc.text.byteCount(text,[charset]) 返回文本的大小(以字节为单位)
apoc.text.bytes(text,[charset]) - return bytes of the text apoc.text.toCypher(值,{skipKeys,keepKeys,skipValues,keepValues,skipNull,node,relationship,start,end})
tries it’s best to convert the value to a cypher-property-string apoc.text.base64Encode(text)-使用Base64编码字符串
apoc.text.base64Decode(text) - Decode Base64 encoded string apoc.text.base64UrlEncode(url)-使用Base64编码url

字符串操作符

在某些时候,我们需要将两个字符串连接起来,这个时候就需要用到+
字符串运算符包括:

连接字符串:+
匹配正则表达式:=~

参考资料

  1. Text Functions in neo4j-apoc-procedures
  2. String functions
  3. where

你可能感兴趣的:(neo4j字符串操作大全)