`
Fis
  • 浏览: 87897 次
  • 性别: Icon_minigender_1
  • 来自: 龙城
社区版块
存档分类
最新评论

使用C#扩展方法定义一个类似Indexof 的字符串查找功能

c# 
阅读更多
  
  使用Unity3d开发VR有几个月了,据说string的 Indexof 方法要尽量避免频繁使用,在把自己的框架移植成Unity3d的过程中,恰巧有个地方需要频繁调用,于是突发奇想,用了下面的办法一定程度替代Indexof方法的使用。

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Text;

public static class SDExtension
{
    public static bool HasSub(this string target, string check)
    {
        StringBuilder sb = new StringBuilder(target);
        int m = sb.Length;
        sb = sb.Replace(check, check + "1");
        return (m != sb.Length);
    }

}


  利用StringBuilder类高效生成字符串的特性,将要查找的子串在StringBuilder中替换成一个新串,如果替换后的字符串长度多出指定数量,则说明原字符串中包含有子串,从而达到判断字符串是否包含一个子串的作用(str.IndexOf("sss") != -1)。同时也避免了频繁调用string引起的性能影响,但缺点是不能像IndexOf一样返回子串在原字符串里的起始索引号。由于还是一个尝试,其可用性还需要验证,有不对的或者有更好的方案欢迎跟帖。
分享到:
评论

相关推荐

    c#程序设计课件,类,方法,属性,对象

    4. `IndexOf()`:这个方法查找指定字符或子字符串在原字符串中的位置。如果找到,返回起始索引;否则,返回-1。例如,`int index = str.IndexOf("World");` 5. `Substring()`:从字符串中截取一部分,例如`string ...

    C# 多功能 计算器

    C#的`string`类提供了丰富的字符串操作方法,如`Split()`用于按特定字符分割字符串,`Trim()`用于去除两端的空白,以及`IndexOf()`和`Substring()`用于查找和提取子字符串。 在实现计算器时,我们可以采用两种常见...

    C#实现的记事本程序

    C#提供了丰富的字符串方法,如`IndexOf`、`Replace`和`Substring`等,可以方便地完成文本查找和替换。 6. **对话框**:在Windows Forms中,可以使用预定义的对话框组件,如`OpenFileDialog`(打开文件对话框)和`...

    C#全能速查宝典

    1.4.24 IndexOf方法——确定指定字符在字符串中的索引 65 1.4.25 IsLeapYear方法——判断年份是否为闰年 67 1.4.26 IsMatch方法——搜索正则表达式匹配项 67 1.4.27 IsUpper方法——判断是否大写 68 1.4.28 Join方法...

    C#文本编辑器

    C#的String类提供了丰富的字符串操作方法,如Substring、IndexOf、Replace等,可以帮助我们实现这些功能。同时,我们需要关注文本选区的处理,例如通过设置TextBox的SelectionStart和SelectionLength属性来管理当前...

    C#编写的记事本(有工具栏)

    在C#中,可以使用字符串方法,如`IndexOf`和`Replace`,结合循环遍历文本,实现文本的查找和替换。用户可以设定搜索条件,如大小写敏感、全词匹配等,以满足不同需求。 “转到”功能允许用户快速跳转到文本的特定行...

    c# 加密和解密相关代码

    数据的加密与解密 文件的加密与解密 ... //定义一个变量,用来存储加密后的字符串 for (int i = 0; i ; i++) //遍历字符串中的每一个字符串 { string ins = c[i].ToString(); //记录遍历到的字符 string outs...

    Chapter 1 of Microsoft Visual C#

    C#中的字符串是不可变的,提供丰富的字符串操作方法,如Concat、IndexOf、Replace等。 通过阅读“Chapter 1 of Textbook.pdf”,你将对这些基础概念有更深入的理解,为后续章节的学习打下坚实的基础。在实际编程中...

    用C#写的记事本,包括所有工程文件。

    5. **字符串处理**:对用户输入的文本进行复制、剪切、粘贴、查找和替换等功能,需要用到C#的字符串方法,如`Substring`、`Replace`、`IndexOf`等。 6. **多线程**:如果记事本支持大文件的读写,可能需要使用多...

    c#写的记事本

    同时,我们还需要掌握字符串操作的相关方法,如Substring、IndexOf、Replace等,以实现查找和替换功能。 为了实现记事本的扩展功能,可以考虑以下几点: 1. **样式和格式化**:允许用户更改文本的字体、大小、颜色...

    C#语法基本结构及趣味用法

    C#的`string`类提供了`IndexOf()`和`Count()`等方法,结合循环和条件判断,可以轻松实现这个功能。 至于“美女时钟”和“英汉翻译”,这两个可能涉及到更具体的应用场景,比如可以利用C#的DateTime类和线程异步处理...

    c#记事本代码

    2. 字符串处理:C#的`String`类提供了丰富的操作方法,如`Substring`用于截取字符串,`IndexOf`和`Replace`分别用于查找子字符串和替换字符串。`StringBuilder`类在大量字符串操作时更为高效,因为它避免了多次内存...

    C#脏字过滤项目文件

    2. **数组或列表存储脏词**:项目可能定义了一个字符串数组或`List<string>`,用来存储预定义的脏词列表。这些脏词可以是用户在配置文件中设定,也可以是程序内置的。 3. **正则表达式**:为了更复杂和灵活的匹配,...

    C#入门教程文档笔记宣贯.pdf

    - `Console`类:它是C#中的一个内置类,提供了在控制台上进行输入和输出的功能。`Console.Write`用于输出文本,但不会换行,而`Console.WriteLine`会输出文本并自动换行。`Console.ReadLine`用于从控制台读取用户...

    C#记事本程序

    5. **字符串处理**:查找和替换功能涉及到对文本字符串的操作,如查找子字符串、替换特定文本等,这将使用到C#的字符串方法,如`IndexOf`、`Replace`和正则表达式。 6. **多线程**:虽然简单的记事本可能不需要,但...

    AS3-StringUtil

    AS3是一种面向对象的编程语言,其内置的String类提供了许多基础的字符串操作方法,如concat()用于连接字符串,indexOf()和lastIndexOf()用于查找子字符串的位置,replace()用于替换子字符串等。然而,这些基础方法在...

    数据结构(C#语言版)

    - .NET Framework中的Array.IndexOf()方法可以用于在数组中查找指定元素的位置。 #### 五、.NET Framework中的数据结构与算法 - 在.NET Framework中,数据结构和算法是通过一系列类库实现的,这些类库提供了丰富的...

    记事本C#

    5. **文本处理**:为了实现文本编辑功能,你需要了解字符串操作,如查找、替换、复制、粘贴等,这些可以通过字符串方法实现,如IndexOf、Replace、Substring等。 6. **UI设计**:为了让记事本看起来更漂亮,你可能...

    c# MyAddressList示例

    4. **重写或实现接口方法**:如果 `MyAddressList` 扩展了 `List<T>` 或实现了 `IList<T>`,那么它可能需要重写一些基本的集合操作,如 `Insert`, `RemoveAt`, `IndexOf` 等。 5. **遍历和排序功能**:为了方便操作...

    c#开发学生成绩管理系统

    每个字段都定义了明确的数据类型,如字符串类型用于存储文本信息,而双精度浮点型用于存储分数。 `studentinformation`类则封装了对`student`结构体的管理操作,包括添加、显示和搜索学生信息。这些操作通过与外部...

Global site tag (gtag.js) - Google Analytics