20190120-自定义实现split方法

1. 实现字符串的split方法
Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串

思路同自定义实现replace方法类型:

  1.先找出字符串中指定分隔字符的index,考虑可能出现多次的情况使用一个列表split_str_index存储分隔字符的index

  2.使用result列表存储分隔后的字符串列表

  3.当index不在split_str_index中的的时候拼接字符串,当index在split_str_index中的的时候的将已拼接的字符串append到result列表中,特别注意最后一定要判断each判断是否为空,来决定是否append一下

  4.考虑分隔次数,使用count来统计分隔次数

def customize_split(s,split_str=‘ ‘,num=None):
    result=[]
    split_str_index=[]
    for i in range(len(s)):
        if s[i:i+len(split_str)]==split_str:
            split_str_index.append(i)
    #存储split_str的index
    if num==None:
        each =‘‘
        j=0
        while j<len(s):
            if j in split_str_index:
                result.append(each)
                each = ‘‘
                j+=len(split_str)
            else:
                each +=s[j]
                j+=1
        if bool(each):
            print(bool(each))
            result.append(each)
    else:
        each =‘‘
        j=0
        count =0
        while j<len(s):
            if count<num and j in split_str_index:
                if bool(each):
                    print(bool(each))
                    result.append(each)
                each = ‘‘
                j+=len(split_str)
                count+=1
            else:
                each +=s[j]
                j+=1
        if bool(each):
            result.append(each)
        #最后一根据each是否为空决定是否要append一下,因为有可能else是最后执行也可能if是最后执行
    return result
print(customize_split(‘abcacabcacac‘,‘c‘))

原文地址:https://www.cnblogs.com/hyj691001/p/10291540.html

时间: 2024-10-17 11:19:07

20190120-自定义实现split方法的相关文章

自定义类工厂方法

1.自定义工厂方法 什么是工厂方法(快速创建方法) 类工厂方法是一种用于分配.初始化实例并返回一个它自己的实例的类方法.类工厂方法很方便,因为它们允许您只使用一个步骤(而不是两个步骤)就能创建对象. 例如new 自定义类工厂方法的规范 (1)一定是+号开头 (2)返回值一般是instancetype类型 (3)方法名称以类名开头,首字母小写 示例 + (id)person; + (id)person { return [[Person alloc]init]; } + (id)personWit

iOS开发中自定义字体的方法

http://www.cnblogs.com/iyou/archive/2014/05/25/3751669.html 1. 首先下载你想要设置的字体库,例如设置方正启体简体 2. 添加到工程,一定要注意勾选红色框框处,默认是不勾选的  添加以后 3.在plist文件中添加 4.现在已经添加成功了,但是要使用就必须知道FontName,用以下代码可查到 NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyName

文章生成器,Split方法截取字符串。从硬盘读取文件,和向硬盘存储文件参考代码

string x, y; private void button2_Click(object sender, EventArgs e) { textBox2.Clear(); if (button4.Enabled == false) { string[] shuzu = y.Split(new char[]{'.'}); //用split方法截取字符串 string news = ""; // 将截取字符串后的语句打乱顺序 for (int i = 0; i < shuzu.L

Javascript 中创建自定义对象的方法(设计模式)

Javascript 中创建对象,可以有很多种方法. Object构造函数/对象字面量: 抛开设计模式不谈,使用最基本的方法,就是先调用Object构造函数创建一个对象,然后给对象添加属性. 1 var student = new Object(); 2 student.name = "xiao ming"; 3 student.age = 20; 4 student.getName = function () { 5 alert(this.name); 6 } 熟悉javascrip

Android peferenceActivity 自定义标题简单方法

Android peferenceActivity 自定义标题简单方法 peferenceActivity 完全使用定义好的布局. 因此不能简单象其它好窗口进行自定,现在我们需要加 一个自定义标题,比如象其它窗口一样加一个统一topbar. 假设这个topbar的布局是 title.xml 一.标准自定义标题栏方法 Android 提供自定义标题栏方法 我们简单实现. @Override protected void onCreate(Bundle savedInstanceState) { f

Java split方法源码分析

Java split方法源码分析 1 public String[] split(CharSequence input [, int limit]) { 2 int index = 0; // 指针 3 boolean matchLimited = limit > 0; // 是否限制匹配个数 4 ArrayList<String> matchList = new ArrayList<String>(); // 匹配结果队列 5 Matcher m = matcher(inp

Asp.net MVC4.0自定义Html辅助方法

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; using System.Web.Mvc; namespace MyEF.ExtentionHtmlHelper { public static class ImageHelper { //说明:因为C#3.0的扩充方法是一种特殊的静态方法,因此在开发Html辅助方法时必须声明为 //静态方

string.split()与re.split()方法区别

re模块的split()方法与字符串的split()方法相似,前者是根据 正则表达式模式 分隔字符串,后者是根据 固定的字符串 分割,因此与后者相比,显著提升了字符分割的能力. 如果分隔符没有使用由特殊符号表示的正则表达式来匹配多个模式,那 re.split()和 string.split()的执行过程是一样的. string.split()与re.split()方法区别,布布扣,bubuko.com

String的split()方法探索和大揭秘

其实没打算写这么一篇博文的,但是昨天在逛论坛的时候,发现一帖子,然后我又把帖子的内容在群里发了一通,结果出现了让人惊讶的结果,所以这里简单的给大家分享一下split()方法,免得大伙儿以后还会出现这种基本知识错误! 接着说一下,昨天看到的帖子内容: String[] str1 = ";;;".split(";"); String[] str2 = ";a;;".split(";"); String[] str3 = "