开发者社区 问答 正文

常用字符串函数

;取子串,$start开始位置 $end结束位置
func subString($str, $start, $end)
        return J_String($str, "取子串", $start & "," & ($end - $start + 1))
EndFunc   ;==>subString

;取左子串
func leftString($str, $count)
        return J_String($str, "取左子串", $count)
EndFunc   ;==>leftString

;取右子串
func rightString($str, $count)
        return J_String($str, "取右子串", $count)
EndFunc   ;==>rightString

;字符长度
Func lengthString($str)
        return J_String($str, "长度", "")
EndFunc   ;==>lengthString

;查找指定字符所在位置
Func indexOf($str, $findStr)
        return J_String($str, "是否包含", $findStr)
EndFunc   ;==>indexOf

;删除头尾部的空格
Func trimString($str)
        $length = lengthString($str)
        ;删除尾部的空白
        for $i = $length to 1 step -1
                $curString = subString($str, $i, $i)
                ;J_LOG($curString & "," & J_EXP($curString, "\s"))
                if lengthString(J_EXP($curString, "\s")) > 0 Then
                        $str = subString($str, 1, $i - 1)
                Else
                        ExitLoop
                EndIf
        Next
        ;删除头部的空白
        while True
                $length = lengthString($str)
                $curString = subString($str, 1, 1)
                if lengthString(J_EXP($curString, "\s")) > 0 Then
                        $str = subString($str, 2, $length)
                Else
                        ExitLoop
                EndIf
        WEnd
        Return $str
EndFunc   ;==>trimString

Func Mbox($msg)
        J_MsgBox($msg)

EndFunc   ;==>Mbox
;反转给定的字符串
Func StrReverse($str)
        ;获取字符串长度
        $length = J_String($str, "长度", "")
        ;定义用来盛放新字符串的变量
        $nstr = ""
        ;反转字符串
        for $i = $length to 1 step -1
                $nstr = $nstr & J_String($str, "取子串", $i & "," & 1)
        next
        ;返回结果
        return $nstr
EndFunc   ;==>StrReverse

Func lastIndexOf($str, $findStr)
        ;反转字符串
        $nstr = StrReverse($str)
        ;获取字符串总长度
        $length = J_String($str, "长度", "")
        ;获取指定字符串在反转后的字符串中的位置
        $loc = J_String($nstr, "是否包含", $findStr)
        ;根据情况处理返回值
        if $loc = 0 Then
                Return 0
        Else
                return $length - $loc + 1
        EndIf
EndFunc   ;==>lastIndexOf


展开
收起
水晶心泉 2017-03-03 22:36:15 1969 分享 版权
阿里云 AI 助理回答

在不同的数据库或数据处理系统中,提取字符串子串的功能可以通过多种函数实现,如nlssortsubstrpg_catalog.substrbSTR_HASH以及标准的SUBSTRINGSUBSTR函数。针对您提供的自定义函数示例subString($str, $start, $end),其目的是从字符串$str中提取从位置$start$end的子串。这里我们可以借鉴上述知识库中的几种函数用法来设计一个简化的逻辑。

解决方案

方法一:基于通用SQL标准的SUBSTRING函数

如果您是在支持标准SQL的环境中操作,可以采用如下方式实现您的需求:

CREATE FUNCTION subString(text, integer, integer) RETURNS text AS $$
BEGIN
  RETURN SUBSTRING($1 FROM $2 FOR $3);
END;
$$ LANGUAGE plpgsql;

说明: - 使用SUBSTRING(str FROM start FOR length)格式,其中str是要处理的字符串,start是起始位置(大多数数据库中起始位置为1),length是要提取的字符数。 - 这个函数将从$str的第$start个字符开始,提取$end - $start + 1个字符长度的子串(注意计算长度时应考虑结束位置是否包含的问题)。

注意事项

  • 确保$start$end的值合法,即$start应大于0且$end不超过字符串长度。
  • 考虑边界情况,比如当$end小于$start时,可能需要返回空字符串或调整参数逻辑以避免错误。

示例代码

假设您正在PostgreSQL这样的数据库环境中,可以直接调用内置的SUBSTRING函数而无需自定义函数,示例如下:

SELECT SUBSTRING('Hello, World!', 7, 5); -- 返回 "World"

扩展阅读

  • 上述解答参考了标准SQL的SUBSTRING函数用法,以及特定于系统的变体如Oracle的Orafce插件中的substr函数和PolarDB-X的STR_HASH函数介绍,这些提供了处理字符串的不同视角和场景应用。

通过上述方法,您可以根据所处的具体技术环境选择合适的函数实现来满足提取子串的需求。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答地址: