获取字符串中指定位置开始的指定长度的字符串,支持汉字英文混合 汉字为2字节计数

#region 函数:GetSubString() 作用:获取字符串中指定位置开始的指定长度的字符串,支持汉字英文混合 汉字为2字节计数
        /// <summary>
        /// 获取字符串中指定位置开始的指定长度的字符串,支持汉字英文混合 汉字为2字节计数
        /// </summary>
        /// <param name="strSub">输入中英混合字符串</param>
        /// <param name="start">开始截取的起始位置</param>
        /// <param name="length">要截取的字符串长度</param>
        /// <returns></returns>
        public static string GetSubString(string strSub, int start, int length)
        {
            string temp = strSub;
            int j = 0, k = 0, p = 0;

            CharEnumerator ce = temp.GetEnumerator();
            while (ce.MoveNext())
            {
                j += (ce.Current > 0 && ce.Current < 255) ? 1 : 2;

                if (j <= start)
                {
                    p++;
                }
                else
                {
                    if (j == GetLength(temp))
                    {
                        temp = temp.Substring(p, k + 1);
                        break;
                    }
                    if (j <= length + start)
                    {
                        k++;
                    }
                    else
                    {
                        temp = temp.Substring(p, k);
                        break;
                    }
                }
            }

            return temp;
        }

        /// <summary>
        /// 获取指定字符串长度,汉字以2字节计算
        /// </summary>
        /// <param name="aOrgStr">要统计的字符串</param>
        /// <returns></returns>
        private static int GetLength(String aOrgStr)
        {
            int intLen = aOrgStr.Length;
            int i;
            char[] chars = aOrgStr.ToCharArray();
            for (i = 0; i < chars.Length; i++)
            {
                if (System.Convert.ToInt32(chars[i]) > 255)
                {
                    intLen++;
                }
            }
            return intLen;
        }
        #endregion
时间: 2024-12-04 10:23:46

获取字符串中指定位置开始的指定长度的字符串,支持汉字英文混合 汉字为2字节计数的相关文章

在字符串中找到全部是由指定的字符组成的最长子串

/* *!============================================================== *! FNAME: search.cpp *! BRIEF: *! AUTHR: RollStone *! EMAIL: [email protected] *! VERNO: 1.0.31 *! CREAT: 2015-04-28 23:43:04 *! CHGON: 2015-04-30 07:53:00 *! *! Copyright (c) 2015 A

[Swift]扩展String类:实现find()查找子字符串在父字符串中的位置

类似于C++中的find()函数:比较等于val的范围中第一个元素的迭代器.如果没有元素匹配,则函数最后返回. 返回值是子字符串在父字符串中的位置(下标记录), 如果没有找到,那么会返回一个特别的标记npos(-1). 返回值可以看成是一个Int型的数. 1 //String扩展 2 extension String { 3 // 截取字符串:从index到结束处 4 // - Parameter index: 开始索引 5 // - Returns: 子字符串 6 func subString

区分/不区分大小写的比较,查找字符串在另一字符串中的位置,字符串开头是否包括另一字符串 hasPrefix

NSString *str; // 使用stringWithFormat生成一格式化字符串 str = [NSString stringWithFormat:@"This is %@","John"]; NSLog(@"str--->%@",str); // 字符串长度length; NSLog(@"The length of this string is %@",[str length]); // 字符串比较 isEq

输入任意一个字符串,如:“abDEe23dJfd343dPOddfe4CdD5ccv!23rr”。 取出该字符串中所有的字母组成一个新的字符串。

#include <stdio.h>#include <string.h> /*输入任意一个字符串,如:“abDEe23dJfd343dPOddfe4CdD5ccv!23rr”. 取出该字符串中所有的字母组成一个新的字符串.*/ void main(){ char oldStr[100] = "abDEe23dJfd343dPOddfe4CdD5ccv!23rr"; char newStr[100]; int i = 0,j = 0; for(i = 0; i

oc将字符串中单词按照出现次数(次数都不一样)降序排序,排序之后单词只出现一次,源字符串中单词用下划线连接,生成字符串也用下滑线连接

/* 将字符串中单词按照出现次数(次数都不一样)降序排序,排序之后单词只出现一次,源字符串中单词用下划线连接,生成字符串也用下滑线连接(10分) 如传入:@"good_good_study_good_study" 返回:@"good_study" 如传入:@"I_love_I_hate_love_love" 返回:@"love_I_hate" */ 方法1:选择排序 -(NSString *)sortStringByNumbe

Map集合应用 取出一个字符串中字母出现的次数。如:字符串:&quot;abcdekka27qoq&quot;&#160;,输出格式为:a(2)b(1)k(2)...

package com.swift; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class Test3_String_char { public static void main(String[] args) { /* * 第4题: 取出一个字符串中字母出现的次数.如:字符串:

Excel-判断一个文本字符串中是否包含数字! 判断一个文本字符串是否是纯汉字!

0.判断一个文本字符串中是否包含数字!/判断一个文本字符串是否是纯汉字! 公式=IF(LENB(A1)=2*LEN(A1),”都是汉字“,“含有非汉字字符”) 解释函数: LEN(A1)#返回文本字符串中的字符个数:  ##双字字符*1*双字节字符个数+单字节字符*1*单字节字符个<=>计算字符个数: LENB(A1)#返回文本字符串中的字符个数.与双字节字符集(DBCS)一起使用.##双字节字符*2*双字节字符个数+单字节字符*1*单字节字符个数<=>计算字节个数: 字符:分为双

将一个字符串中的空格替换为指定的内容——4

实现一个函数,将一个字符串中的所有空格替换为"%20",例如输入字符串"How beautiful you are!",输出结果应为"How%20beautiful%20you%20are!". 首先,如果另开辟一块空间并且足够将全部空格都替换成"%20",然后一个单词一个单词的拷贝过去,当遇到空格时就放进去"%20",这种低效率的方法肯定是可行的,但很显然不仅效率不高还浪费存储空间,因此,要节省空间就要在

index 辨别字符在字符串中的位置

namespace index{    class Program    {        static void Main(string[] args)        {            while (true)            {                string s = "abcdefghijklmn";                int i = s.IndexOf("f"); // i是f在字符串s中的位置,这里为5,注意开始位置是