`

[转]小小的字符串处理工具

阅读更多
http://bbs.9ria.com/viewthread.php?tid=80390&extra=page%3D1%26amp%3Borderby%3Ddateline%26amp%3Bfilter%3D2592000

今天闲的蛋疼,想到我一同事去面试,居然被面试官关于字符串处理的问题给难到了。我就想写一个小小的字符串处理工具类,不是很难,用起来还是很顺手的。有几个对外的方法。
isContains(os:string,cs:string):Boolean
检查字符串os中是否包含字符串cs;包含则返回true,否则返回false;对传入的字符串会检查是否为空;如果有一个为空则返回false;

showStringNum(os:string,cs:string):int
得到字符串cs在os中出现的次数。

insertString(os:string,cs:string,n:int):string
在字符串os下标为n的地方插入字符串cs;并返回新得到的字符串;(个人觉得这个功能还是很有用的)

stringIndexArr(os:string,cs:string):Array
找到字符串cs在os中的所有位置;并返回一个包含所有位置的数组;

delString(os:string,cs:string):string
删除字符串os中所有的cs;并返回删除后的字符串;

replaceString(os:string,ns:string,replace:string):string
在字符串os中,用replace替换所有的ns;并得到的新的字符串;


估计给那些对正则表达式还不是很熟悉的初学者应该还是有用的。
package  
{
        /**
         * @author wangyong
         */
        public class StringTools 
        {
                public static function get instance () : StringTools
                {
                        if(StringTools._stringTools)
                        {
                                return StringTools._stringTools;
                        }
                        else
                        {
                                StringTools._stringTools = new StringTools(new Single());
                                return StringTools._stringTools;
                        }
                }
                
                private static var _stringTools : StringTools;

                public function StringTools (s : Single)
                {
                        
                }

                
                //检查字符串是否包含一个特征字符串
                public function isContains (os : String,cs : String) : Boolean
                {
                        if(os.indexOf(cs) != - 1)
                        {
                                return true;
                        }
                        else
                        {
                                return false;
                        }
                }

                
                //某个字符串出现的次数
                public function showStringNum (os : String,cs : String) : int
                {
                        if(isContains(os, cs)&&checkStringLength(os)&&checkStringLength(cs))
                        {
                                return os.match(initRegExp(cs)).length;
                        }
                        else
                        return 0;
                }

                
                //在指定位置插入一个字符串
                public function insertString (os : String,cs : String,n : int) : String
                {
                        if(isContains(os, cs)&& n >=0 && n < os.length&&checkStringLength(os)&&checkStringLength(cs))
                        {
                                var strA : String = os.substring(0, n);
                                var strB : String = os.substring(n, os.length - 1);
                                return strA + cs + strB;
                        }
                        else
                        {
                                return null;
                        }
                }

                
                //在一个字符串中搜索特征字符串的所有下标(位置)
                public function stringIndexArr (os : String,cs : String) : Array
                {
                        if(isContains(os, cs)&&checkStringLength(os)&&checkStringLength(cs))
                        {
                                return checkString(os, cs);
                        }
                        else
                        {
                                return null;
                        }
                }

                
                //在一个字符串中删除特征字符串
                public function delString (os : String,cs : String) : String
                {
                        var arr:Array = os.split(initRegExp(cs));
                        var str:String;
                        for(var i:int = 0;i<arr.length;i++)
                        {
                                if(i==0)
                                {
                                        str = arr[i];
                                }else
                                {
                                        str += arr[i];
                                }
                        }
                        return str;
                }

                
                //替换字符串中所有的特征字符串
                public function replaceString (os : String,ns : String,replace:String) : String
                {
                        if(isContains(os, ns)&&checkStringLength(os)&&checkStringLength(ns)&&checkStringLength(replace))
                        return os.replace(initRegExp(ns), replace);
                        else 
                        return null;
                }

                //首先要检查一个传进来字符串的长度是否为零
                private function checkStringLength(os:String):Boolean
                {
                        if(os.length !=0)
                        {
                                return true;
                        }
                        else 
                        {
                                return false;
                        }
                }
                
                //初始化正则表达式,默认为全部搜索
                private function initRegExp (ns : String) : RegExp
                {
                        return new RegExp(ns, "g");
                }

                
                //特征字符在字符串里的下标。用了字符串匹配的一个算法
                private function checkString (os : String,ns : String) : Array
                {
                        var j : int = 0;
                        var arr : Array = new Array();
                        for(var i : int = 0;i < os.length;i++)
                        {
                                if(os.charAt(i) == ns.charAt(j))
                                {
                                        if(j == ns.length-1)
                                        {
                                                arr.push(i - ns.length + 1);
                                                j = 0;
                                        }
                                        else
                                        {
                                                j++;
                                        }
                                }
                                else
                                {
                                        j = 0;
                                }
                        }
                        
                        return arr;
                }
        }
}

class Single
{
}


分享到:
评论

相关推荐

    string字符串自动格式化单引号分隔工具

    在IT行业中,字符串处理是一项基础且重要的任务,尤其是在数据库操作和编程中。"string字符串自动格式化单引号分隔工具"就是一个专为简化这一任务而设计的应用。它能够自动将一个字符串按照指定的单引号进行分隔,以...

    Matlab中创建字符串数组.docx

    Matlab中创建字符串数组是指在Matlab中创建和处理字符串数组的方法。从R2016b开始,Matlab引入了字符串数组,可以存储文本片段,并提供了一组用于将文本按数据进行处理的函数。字符串数组可以对字符串进行索引、重构...

    Matlab字符串 字符串数组 数据类型转换.docx

    Matlab 字符串和字符串数组数据类型转换 Matlab 中的字符串是指由一系列字符组成的数组,通常以单引号括起来。...Matlab 中的字符串和字符串数组数据类型转换是非常灵活和强大的,可以满足各种字符串处理需求。

    quicklz cocos2dx 压缩 字符串压缩

    QuickLZ是一款高效的开源压缩库,它在Cocos2d-x框架中被广泛用于字符串压缩。Cocos2d-x是一个跨平台的2D游戏开发框架,支持多种操作系统,包括iOS、Android、Windows等。字符串压缩在游戏开发中非常重要,因为它可以...

    MATLAB字符串数组.docx

    下面将详细讲解MATLAB字符串数组的基本概念、操作方法以及相关的字符处理函数。 1. **字符串数组的创建与表示** - 创建字符串时,需使用英文状态下的单引号包围文本。例如,`'Hello'` 是一个包含5个字符的字符串。...

    驼峰转下划线、下划线转驼峰的java工具类

    未优化复杂场景:在大量字符串处理时,如果字符串长度较大,可能有进一步优化空间,例如减少字符串复制次数。 调用方法描述: camelToUnderscore方法接收一个驼峰命名的字符串作为参数,并返回相应下划线命名的...

    matlab创建字符,MATLAB字符串数组的创建与运算.docx

    MATLAB 字符串数组的创建与运算 MATLAB 中的字符串数组是一种基本数据类型,用于存储和操作字符串数据。...通过掌握这些知识点,您可以更好地处理和操作字符串数据,使您的编程工作更加高效和便捷。

    Python-一个使用多种常见哈希算法来哈希字符串文件和网络资源的小小的工具

    标题提到的“Python-一个使用多种常见哈希算法来哈希字符串文件和网络资源的小小的工具”,很显然,这是一个Python编写的程序,用于计算字符串、本地文件以及网络资源的哈希值。这个工具可能包括了MD5、SHA1、SHA256...

    Python字符串常用方法汇总.docx

    切片是一种从字符串中获取子字符串的强大工具。可以通过指定起始位置和结束位置来提取部分字符串。例如: ```python s = 'hello' print(s[1:3]) # 输出: el print(s[:3]) # 输出: hel print(s[3:]) # 输出: lo ``` ...

    大写转小写小写转大写工具类

    优点: 1. 提供了便捷的方法进行字符串大小写转换,简化代码,提高复用性。 2. 对null值进行了处理,避免了运行时异常。 缺点: ...在处理国际化字符串时需要注意Unicode字符集下的大小写转换规则。

    mycat字符串枚举分片示例.txt

    ### MyCat 字符串枚举分片示例详解 #### 一、背景介绍 Mycat作为一款开源的分布式数据库中间件,通过SQL解析、路由等功能实现数据分片,能够有效提升大规模数据处理效率和系统扩展性。在Mycat中,`org.opencloudb....

    小小计算器

    总的来说,"小小计算器"项目涵盖了字符串处理、正则表达式、数组遍历、栈和队列数据结构、运算符优先级处理、递归和错误处理等多个基础编程知识点。通过这个项目,初学者可以深入理解编程中的数据处理和逻辑控制,为...

    GlobalStringCompressionRepository:压缩字符串并返回一个字符串,该字符串具有所有唯一的字母表,并在该字母表之后的每个字母表计数

    这样的压缩方法可以有效地减少数据存储空间,尤其是在处理大量重复字符的字符串时。 描述进一步确认了这个过程:压缩后的字符串会列出所有独特的字母,并在每个字母后面附上它在原始字符串中出现的次数。例如,如果...

    Jason解析和生成工具类

    对于"JasonAPI"这个文件,很可能是某个特定的JSON处理工具的API文档或者实现代码。通过阅读和理解这个文件,开发者可以学习如何在自己的项目中利用这个工具进行JSON的解析和生成,从而提高数据处理的效率和便捷性。...

    java-小小计算器

    5. **字符串处理**:用户输入可能以字符串形式存在,需要解析成数字进行计算,可能需要用到Integer.parseInt()或Double.parseDouble()。 6. **类与对象**:理解类的构造函数、方法重载和继承等面向对象特性。 7. *...

    十六进制转汉字

    使用这个工具,用户可以选择输入汉字或16进制字符串,程序会自动完成转换。"使用说明.txt" 文件很可能是包含该工具操作指南的文档,教导用户如何输入数据、选择编码格式以及执行转换操作。而"汉字十六进制转换工具...

    CountAnimationTextView,一个小小的android库使得计算textview动画变得非常容易。.zip

    这个库的核心功能在于能够平滑地将一个数字或字符串从初始值过渡到目标值,过程中呈现出动画效果。这可以是简单的数字递增或递减,也可以是复杂的一系列字符的出现顺序。开发者可以通过调用库提供的API,设置动画的...

    串口精灵,常用串口工具最新版

    多字符发送则允许一次性发送多个字符或字符串,这对于快速测试和验证通信协议的正确性非常有用。 在实际应用中,SSCOM5.13.1.exe这个文件是串口精灵的可执行程序,用户下载后直接运行即可开始使用。需要注意的是,...

    3160104875_杨樾人_homework31

    通过以上分析,我们可以根据实际需求和环境来选择最适合的字符串处理工具,以达到最佳的性能和安全性。在日常开发中,对于性能敏感的代码,应优先考虑使用StringBuilder,而在多线程场景下,选择StringBuffer来避免...

    ddelphi编写的小小程序(记事本)

    保存功能则可能使用类似的方法,先将TMemo的文本内容转换为字符串,再写入到指定文件。 此外,程序可能还包含了一些基本的错误处理和用户交互设计,比如验证文件路径的有效性,提供关于对话框,或者处理可能出现的...

Global site tag (gtag.js) - Google Analytics