C++ 实现Python String 中的strip,lstrip,rstrip函数
  TEZNKK3IfmPf 2天前 6 0

   

    /// <summary>
    /// 参数为null时删除左边的空白字符(包括’\n’, ‘\r’, ‘\t’, ’ ')
    /// </summary>
    /// <returns></returns>
    /// 创建时间: 2023-03-28      最后一次修改时间:2023-03-28 (已测试)
    _StrW Python_lstrip(const wchar_t* pArrayChar = null)const;


    /// <summary>
    /// 参数为null时删除右边的空白字符(包括’\n’, ‘\r’, ‘\t’, ’ ')
    /// </summary>
    /// <param name="pArrayChar"></param>
    /// <returns></returns>
    /// 创建时间: 2023-03-28      最后一次修改时间:2023-03-28  (已测试)
    _StrW Python_rstrip(const wchar_t* pArrayChar = null)const;

    /// <summary>
    /// 默认删除两边的空白符(包括’\n’, ‘\r’, ‘\t’, ’ '),注意:只删除开头或是结尾的字符,不删除中间部分的字符。
    /// </summary>
    /// <returns></returns>
    /// 创建时间: 2023-03-28      最后一次修改时间:2023-03-28  (已测试)
    _StrW Python_strip(const wchar_t* pArrayChar = null)const;

 

_StrW _StrW::Python_lstrip(const wchar_t* pArrayChar) const
{     
    int nLelfCopyStart = _nLength; //左边开始拷贝位置

    const wchar_t* pRemove = pArrayChar == null ? _t("\t\n\r ") : pArrayChar;
      
    for (int i = 0; i < _nLength; ++i)
    {       
        if (_Math::StrChr(pRemove, _pData[i]) == -1)
        {           
            nLelfCopyStart = i;
            break;     
        }     
    }  
    return nLelfCopyStart < _nLength ? SubStr(nLelfCopyStart, _nLength - nLelfCopyStart) : _StrW();
}

_StrW _StrW::Python_rstrip(const wchar_t* pArrayChar) const
{
    int nRightCopyStart = -1; //右边开始拷贝位置

    const wchar_t* pRemove = pArrayChar == null ? _t("\t\n\r ") : pArrayChar;

    for (int i = _nLength - 1; i >= 0; --i)
    {
        if (_Math::StrChr(pRemove, _pData[i]) == -1)
        {
            nRightCopyStart = i;
            break;
        }
    }
    return nRightCopyStart > 0 ? SubStr(0, nRightCopyStart + 1) : _StrW();
}

_StrW _StrW::Python_strip(const wchar_t* pArrayChar) const
{
    int nLelfCopyStart = _nLength; //左边开始拷贝位置

    const wchar_t* pRemove = pArrayChar == null ? _t("\t\n\r ") : pArrayChar;

    for (int i = 0; i < _nLength; ++i)
    {
        if (_Math::StrChr(pRemove, _pData[i]) == -1)
        {
            nLelfCopyStart = i;
            break;
        }
    }

    int nRightCopyStart = -1; //右边开始拷贝位置
     

    for (int i = _nLength - 1; i >= 0; --i)
    {
        if (_Math::StrChr(pRemove, _pData[i]) == -1)
        {
            nRightCopyStart = i;
            break;
        }
    }

    //拷贝长度
    int nCopyLength = nRightCopyStart - nLelfCopyStart + 1;

    return nCopyLength > 0 ? SubStr(nLelfCopyStart, nCopyLength) : _StrW();
}

例子:

C++ 实现Python String 中的strip,lstrip,rstrip函数

 

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2天前 0

暂无评论

TEZNKK3IfmPf