精华内容
下载资源
问答
  • js判断字符串长度方法

    千次阅读 2019-10-13 19:24:37
    js中判断字符串的长度一般都是使用 length 属性 ,但是 length 属性获取到的字符串长度是以字节为单位,如果我们想要利用 js 根据字节来获取或判断一串字符串的长度该如何做呢? js 按字符判断一串字符串的长度 ...

    js中判断字符串的长度一般都是使用 length 属性 ,但是 length 属性获取到的字符串长度是以字节为单位,如果我们想要利用 js 根据字节来获取或判断一串字符串的长度该如何做呢?

    js 按字符判断一串字符串的长度

    length:属性可以读取字符串的长度。长度以字符为单位,该属性为只读属性。
    示例代码:

    <script>
        var str = 'hello word!';
        console.log(str.length);
        var str2 = '你好,世界!你好,中国!';
        console.log(str2.length);
    </script>
    

    输出结果:11 12
    注:
    1、使用 length 属性获取长度,每个字符,包括空格,标点符号都算是一个字符
    2、length 属性中,中文字符也默认为一个字符

    js 按字节判断一串字符串的长度

    JavaScript 中支持的字节包括,单字节和双字节两种类型。一般来说英文以及英文符号占1个字符,中文汉字以及中文符号占2个字符
    示例1:
    charCodeAt():方法返回指定位置的字符的 Unicode 编码。它的值为 0 - 65535 之间的整数。

    <script>
        var str = '电影:我和我的祖国';
        var len = 0;
        for (var i = 0; i < str.length; i++) {
            if (str.charCodeAt(i) > 127 || str.charCodeAt(i) == 94) {
                len += 2;
            } else {
                len++;
            }
        }
        console.log(len);
    </script>
    

    输出结果: 18
    示例2:
    一个汉字2个字符,一个中文符号两个字符。

    <script>
        var str = '你好,世界!';
        var len = 0;
        for (var i = 0; i < str.length; i++) {
            var c = str.charCodeAt(i);
            //单字节加1   
            if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) {
                len++;
            } else {
                len += 2;
            }
        }   
        console.log(len);
    </script>
    

    输出结果:12
    示例3:
    把双字节的字符替换成两个单字节的字符,并获取它的字符数

    <script>
        var str = '飞鸟慕鱼博客';
        var len = str.replace(/[^\x00-\xff]/g, "00").length; 
        console.log(len);
    </script>
    

    运行结果:12
    示例4:

    <script>
        var str = '中华人民共和国';
        var len = 0;
        for (var i = 0; i < str.length; i++) {
            var c = str.charAt(i);
            if (escape(c).length > 4) {
                len += 2;
            } else if (c != "\r") { 
                len++; 
            }
        }   
        console.log(len);
    </script>
    

    运行结果:14
    示例5:
    可以使用正则表达式,来判断字符是否为双字节

    <script>
        var str = '这里使用的正规表达式';
        var len = 0;
        for (var i = 0; i < str.length; i++) {
            var a = str.charAt(i);
            //使用的正则表达式
            if (a.match(/[^\x00-\xff]/ig) != null) {
                len += 2;
            } else {
                len += 1;
            }
        }   
        console.log(len);
    </script>
    //20
    

    本文链接:
    https://www.feiniaomy.com/post/454.html

    展开全文
  • abap 中对于字符串长度的计算一般用 strlen 函数实现。但此函数只能算出字符的个数无法计算字符串的长度,例如 'ABC你好'用此函数计算得到的值为5,显然它不是我们想要的,它的字节长度为7 。 经过研究,我写了一个...

      abap 中对于字符串长度的计算一般用 strlen 函数实现。但此函数只能算出字符的个数无法计算字符串的长度,例如 'ABC你好'用此函数计算得到的值为5,显然它不是我们想要的,它的字节长度为7 。

       经过研究,我写了一个函数可以实现功能代码如下:

    FUNCTION YGET_CNCHAR_CHARLE.
    *"----------------------------------------------------------------------
    *"*"Local interface:
    *"  IMPORTING
    *"     REFERENCE(STRING) TYPE  STRING 传入字符串
    *"  EXPORTING 
    *"     REFERENCE(STR) TYPE  STRING  返回字符串
    *"     REFERENCE(CHARLEN) TYPE  I   返回长度
    *"----------------------------------------------------------------------

    DATA: w_uccp TYPE i,
    w_temp(2) TYPE c,
    w_left(100) TYPE c,
    w_len(10) TYPE c,
    s_len TYPE i
    .
    w_left = string.

    DATA : BEGIN OF line,
           text TYPE c,
           END OF line,
           itab LIKE TABLE OF line WITH HEADER LINE.


    *DATA str TYPE string.
    DO.
      CALL FUNCTION 'TEXT_SPLIT'
        EXPORTING
          length = 2
          text   = w_left
        IMPORTING
          line   = w_temp
          rest   = w_left.

      CALL METHOD cl_abap_conv_out_ce=>uccpi
        EXPORTING
          char = w_temp
        RECEIVING
          uccp = w_uccp.
      w_len = STRLEN( w_temp ).
    *  WRITE: /1 w_temp,
    *  10 w_uccp,
    *  25 w_len.
      IF w_uccp > 256.
        CONCATENATE str w_temp INTO str.
      ENDIF.
      IF w_left IS INITIAL OR sy-index > 100.
        EXIT.
      ENDIF.
    ENDDO.
    IF str IS NOT INITIAL.
      DATA:t_len TYPE i.
      clear :  s_len,charlen.
      t_len = STRLEN( string ).
      s_len = STRLEN( str ).
      t_len =  t_len - s_len .
      s_len = s_len * 2 .
      charlen =  t_len + s_len.
    *  WRITE :/,'CHARLEN=' ,charlen, 'STR= ',str.
    ENDIF.

     

    ENDFUNCTION.



    """""""""方法2


    DATAlv_str TYPE string,
                lv_len TYPE i.

    lv_str 'AB中国'.

    lv_len cl_abap_list_utilities=>dynamic_output_lengthlv_str ).

    WRITE lv_len.

    展开全文
  • 但有时需要以字节单位获得字符串长度。例如,“123abc长城”按字节长度计算是10,而按Unicode计算长度是8。为了获得10,需要从头扫描根据字符的Ascii来获得具体的长度。如果是标准的字符,Ascii的范围是0至255,...
    由于Java是基于Unicode编码的,因此,一个汉字的长度为1,而不是2。但有时需要以字节单位获得字符串的长度。例如,“123abc长城”按字节长度计算是10,而按Unicode计算长度是8。为了获得10,需要从头扫描根据字符的Ascii来获得具体的长度。如果是标准的字符,Ascii的范围是0至255,如果是汉字或其他全角字符,Ascii会大于255。因此,可以编写如下的方法来获得以字节为单位的字符串长度。
    
         public  int getWordCount(String s)
        {
             int length = 0;
             for( int i = 0; i < s.length(); i++)
            {
                 int ascii = Character.codePointAt(s, i);
                 if(ascii >= 0 && ascii <=255)
                    length++;
                 else
                    length += 2;
                    
            }
             return length;
            
        }

        当然,也可以采用正则表达式来简化上面的方法,代码如下:
         public   int getWordCount(String s)
        {

            s = s.replaceAll("[^\\x00-\\xff]", "**");
             int length = s.length();
             return length;
        }

        上面代码的基本原理是将字符串中所有的非标准字符(双字节字符)替换成两个标准字符(**,或其他的也可以)。这样就可以直接例用length方法获得字符串的字节长度了。

    【原文地址:http://www.blogjava.net/nokiaguy/archive/2010/04/11/317982.html

    =============

    转者注:通过此方法可以实现中文英文都有时的限制长度输入(比如最长4个汉字,或8个字符)。对于文本框的控制很常见,随便贴个:android 中如何限制 EditText 最大输入字符数

    展开全文
  • Lua中获取字符串长度整理

    万次阅读 2018-10-31 22:58:41
    在Lua中,获取字符串长度我们一般使用#str(不建议使用string.len(str))! local str = "abc" local len = #str print(len) -- 3 str = "你们好" len = #str print(len) -- 9 这里就出现了一个问题:为啥"abc...

    Lua 中,获取字符串长度我们一般使用 #str(不建议使用 string.len(str) )!

    local str = "abc"
    local len = #str
    print(len)  -- 3
    
    str = "你们好"
    len = #str
    print(len)  -- 9

    这里就出现了一个问题:为啥字符串 abc 的长度为 3,而字符串 你们好 的长度却是 9 呢?难道是哪里出问题了?当然不是!

    其实这是字符编码导致的,在使用 UTF-8 字符编码的情况下,一个中文字符一般占 3 个字节,所以 3 个中文字符自然就是 9 个字节咯!

    那么问题来了,现在我需要不管是中文字符还是其他字符,长度都为 1 该咋整呢?

    这里记录两种方案:

    方案一

    -- 获取字符串的长度(任何单个字符长度都为1)
    function getStringLength(inputstr)
        if not inputstr or type(inputstr) ~= "string" or #inputstr <= 0 then
            return nil
        end
        local length = 0  -- 字符的个数
        local i = 1
        while true do
            local curByte = string.byte(inputstr, i)
            local byteCount = 1
            if curByte > 239 then
                byteCount = 4  -- 4字节字符
            elseif curByte > 223 then
                byteCount = 3  -- 汉字
            elseif curByte > 128 then
                byteCount = 2  -- 双字节字符
            else
                byteCount = 1  -- 单字节字符
            end
            -- local char = string.sub(inputstr, i, i + byteCount - 1)
            -- print(char)  -- 打印单个字符
            i = i + byteCount
            length = length + 1
            if i > #inputstr then
                break
            end
        end
        return length
    end
    
    local str = "I think,故我在!"
    local len = getStringLength(str)
    print(len)  -- 12

    方案二

    -- 计算 UTF8 字符串的长度,每一个中文算一个字符
    function utf8len(input)
        local len  = string.len(input)
        local left = len
        local cnt  = 0
        local arr  = {0, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc}
        while left ~= 0 do
            local tmp = string.byte(input, -left)
            local i   = #arr
            while arr[i] do
                if tmp >= arr[i] then
                    left = left - i
                    break
                end
                i = i - 1
            end
            cnt = cnt + 1
        end
        return cnt
    end
    
    local str = "I think,故我在!"
    local len = utf8len(str)
    print(len)  -- 12

    归根结底其实就是对 UTF-8 字符编码进行处理!

    参考:

    关于字符编码的八个点

    在Lua中计算含中文的字符串的长度

    展开全文
  • 两种字符串比较方法

    千次阅读 2018-11-07 19:14:28
    c++中在将字符串做为map的key时,或对字符串进行排序时,需要提供比较方法,如果使用的是string,可以不用指定比较方法,因为标准库为basic_string定义了bool operator&lt; (const string&amp; lhs, const ...
  • 今后继续整理算法并写出自己的理解...<1> 题目描述:实现求字符串长度函数my_strlen <2> 方法一:直接法 <3> 方法二:递归法源码: 一、 递归实现my_strlen 1、 直接法#include using namespace std; size_t my_strlen
  • golang中获取字符串长度的几种方法

    万次阅读 2016-11-21 12:46:58
    一、获取字符串长度的几种方法 - 使用 bytes.Count() 统计 - 使用 strings.Count() 统计 - 将字符串转换为 []rune 后调用 len 函数进行统计 - 使用 utf8.RuneCountInString() 统计 例: str:="HelloWord...
  • 在 Java中按字节获得字符串长度两种方法

    千次阅读 热门讨论 2010-04-13 08:32:00
    但有时需要以字节单位获得字符串长度。例如,“123abc长城”按字节长度计算是10,而按Unicode计算长度是8。为了获得10,需要从头扫描根据字符的Ascii来获得具体的长度。如果是标准的字符,Ascii的范围是0至25
  • 输入一串字符,输出结果为大写的...#include//求字符串长度的函数strlen()在里面 int main() { char s[20]; int i; printf("请输入一个字符串\n"); gets(s); for(i=0;i(s);i++) { if(s[i]>='A' && s[i]) {
  • 在String类和继承抽象类AbstractStringBuilder的StringBuilder和StringBuffer类中,length()和codePointCount()方法都是计算字符串长度。测试运行的长度值是相等的,那为什么要设定方法呢?经过研究发现:对于...
  • C++提供了一新的数据类型——字符串类型(string类型),在使用方法上,它和char、int类型一样,可以用来定义变量,这就是字符串变量——用一个名字代表一个字符序列。 实际上,string并不是C++语言本身具有的基本类型...
  • (3)求字符数组内字符串长度 (4)个数组内容的比较 类似于字符串处理函数strcat 、 strcpy 、 strlen、strcmp的作用 。 (方法1--用指针做形参) */ #include using namespace std; char *str_
  • 当字符串含有中文字符,计算字符串长度用传统方法(.length())会有问题。
  • 字符串长度计算

    千次阅读 2018-07-08 16:26:07
    一、获取字符串长度的几种方法- 使用 bytes.Count() 统计- 使用 strings.Count() 统计- 将字符串转换为 []rune 后调用 len 函数进行统计- 使用 utf8.RuneCountInString() 统计例:str:="HelloWord"l1:=len...
  • 主要有以下几: string[i]所获得的元素是只读...string.Replace(old, new)(将字符串中指定字符或者子字符串做相应的替换) string.ToLower(); string.ToUpper()(转换字符串大小写) string.Trim(); strin
  • C++字符串切割的两种方法

    万次阅读 多人点赞 2015-10-15 16:59:36
    字符串切割的使用频率还是挺高的,string本身没有提供切割的方法,但可以使用stl提供的封装进行实现或者通过c函数strtok()函数实现。1、通过stl实现涉及到string类的个函数find和substr: 1、find函数 原型:...
  • C字符串长度定义规范

    千次阅读 2009-01-07 19:22:00
    C字符串长度定义规范(转载...定义字符串长度两种方式, 一种是用字符串的大小, 一种是字符串的长度.字符串的大小即内存空间的大小, 而串长度加1才是所需空间.正确:char str[MAX_SIZE];char str[MAX_LEN + 1];错误:cha
  • golang计算字符串长度

    千次阅读 2018-06-20 22:37:41
    计算字符串长度两种情况,一种是 ascii 字符,另一种为本地编码 (如:utf8) 的字符。 package main import "fmt" import "unicode/utf8" func main() { fmt.Println("Hello, 世界&...
  • 最近在做一些程序题目,需要获取字符串长度。 有这么几个函数,却不知道区别。sizeof() 、strlen()、str.length(); (C/C++ strlen(str)和str.length()和str.size()都可以求字符串长度。 其中str.length()和str....
  • Lua中字符串长度

    千次阅读 2020-02-18 19:54:11
    一般来说有两种方式,一种使用"#"来计算,另一种来使用字符串函数string.length来计算; local str1="中国人" local str2="zhongguoren" print(#str1) --9 print(string.len(str1)) --9 print(#str2) --11 print...
  • 两种方法分割python多空格字符串

    万次阅读 多人点赞 2018-08-28 14:27:48
    这篇博客需要处理的问题就是:一个字符串被多个不同长度的空白分割,我需要把空格去掉,留下有用的信息形成一个列表 如:"aa bbbbb ccc d" ----》['aa', 'bbbbb', 'ccc', 'd'] 做法: 1.str.split() 2...
  • C++字符串比较大小的两种方法

    万次阅读 2017-05-08 12:55:25
    c++字符串比较大小的两种方法 一、.compare函数的使用
  • 如下字符数组or字符串,用strlen函数求长度各是多少? char * p = “abc” 与 char a[] = &amp;amp;quot;abc&amp;amp;quot;两种形式并不同; char * str1 = &amp;amp;quot;abc&amp;amp;quot;; ...
  • js中的字符串长度

    千次阅读 2015-12-29 11:08:45
    众所周知String对象的length属性能够返回字符串长度,不管字符是单字节还是双字节,都作为一个长度单位来计算。因此要准确的获取字符长度,必须通过手工来写。 下面介绍两种方式: 1、循环遍历字符串,根据字符...
  • 【Java】获取随机字符串两种方法

    万次阅读 2013-08-02 23:33:13
    在这里提供两种获取随机字符串方法方法一 参数为字符串长度。 /** 产生一个随机的字符串*/ public static String RandomString(int length) { String str = ...
  • 字符串的next值的两种方法

    万次阅读 多人点赞 2019-03-01 22:06:04
    这两天在研究关于字符串匹配的KMP算法,其中需要求...以字符串ababaaababaa(下文也称为字符串s)为例,其next值为011234223456,下面介绍两种求解方法,其中无论是字符串s或是next数组,下标均从1开始(注意不是0),...
  • VC中获取字符串长度的四类型

    千次阅读 2016-03-12 00:12:39
    VC中的字符串类型和处理函数是一个比较复杂的问题,这类函数有四中,以去字符串长度的函数为列,如下所示: strlen  str族 wcslen wcs族 _mbslen _mbs族 _tcslen  _tcs族 其中,前族的函数是C语言的标准...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 654,443
精华内容 261,777
关键字:

两种处理字符串长度的方法