截字符串(汉字一个算两个字符,英文算一个字符)

------摘自动易(RSSFeed.asp)

‘**************************************************
‘函数名:GetSubStr
‘作  用:截字符串,汉字一个算两个字符,英文算一个字符
‘参  数:str   ----原字符串
‘        strlen ----截取长度
‘返回值:截取后的字符串
‘**************************************************
Function GetSubStr(ByVal str, ByVal strlen, bShowPoint)
    If str = "" Then
        GetSubStr = ""
        Exit Function
    End If
    Dim l, t, c, i, strTemp
    str = Replace(Replace(Replace(Replace(str, "&nbsp;", " "), "&quot;", Chr(34)), "&gt;", ">"), "&lt;", "<")
    l = Len(str)
    t = 0
    strTemp = str
    If strlen = "" Then
        strlen = 0
    Else
        strlen = CLng(strlen)
    End If
    For i = 1 To l
        c = Abs(Asc(Mid(str, i, 1)))
        If c > 255 Then
            t = t + 2
        Else
            t = t + 1
        End If
        If t >= strlen Then
            strTemp = Left(str, i)
            Exit For
        End If
    Next
    If strTemp <> str And bShowPoint = True Then
        strTemp = strTemp & "…"
    End If
    GetSubStr = Replace(Replace(Replace(Replace(strTemp, " ", "&nbsp;"), Chr(34), "&quot;"), ">", "&gt;"), "<", "&lt;")
End Function
时间: 2024-11-09 12:09:10

截字符串(汉字一个算两个字符,英文算一个字符)的相关文章

js判断输入字符串长度(汉字算两个字符,字母数字算一个):例如 要求输入12的字,24个字节

<html> <head> <title>js判断输入字符串长度(汉字算两个字符,字母数字算一个)</title> <style type="text/css"> .pbt { margin-bottom: 10px; } .ie6 .pbt .ftid a, .ie7 .pbt .ftid a { margin-top: 1px; } .cl:after { clear: both; content: ".&quo

截取文本,区分中英文字符,中文算两个长度,英文算一个长度

/// <summary>    /// 截取文本,区分中英文字符,中文算两个长度,英文算一个长度   /// </summary>   /// <param name="str">待截取的字符串</param>   /// <param name="length">需计算长度的字符串</param>   /// <returns>string</returns>   p

java代码验证用户名,支持中英文(包括全角字符)、数字、下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数

package com.sangedabuliu.www; import java.util.regex.Matcher; import java.util.regex.Pattern; public class UserReg { /** * 验证用户名,支持中英文(包括全角字符).数字.下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数 * @author www.sangedabuliu.com * @param userName * @return */ public

一个字符串中找到第一个只出现一次的字符

题目描述: 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符. 如输入 abaccdeff,则输出 b. 输入: 输入有多组数据每一组输入一个字符串. 输出: 输出第一个只出现一次的字符下标,没有只出现一次的字符则输出-1 我们这里有两种解题思路 1.蛮力法. 遍历数组,每找到一个字符是遍历一下整个数组,看看该字符是否存在数组下表不一致,但是ASSIC码值一样的字符还存在,如果不存在,则是返回该字符,如果存在,则继续遍历.该算法的时间复杂度为O(n

(算法)字符串中首先出现两次的字符

题目: 给定一个字符串,请写一段代码找出这个字符串中首先出现两次的那个字符. 例如字符串为"qywyer23tdd",输出为y. 思路: 1.从头到尾遍历字符串str,如果str[i]为首先出现两次的字符,则满足的条件是str[i]==str[j](0<=j<i); 2.遍历字符串时,通过类似hash数组来统计字符出现的次数,由于char字符有256个,为0-255,所以需创建一个256大小的数组,即int A[256]. 代码: char firstCharAppearT

String-需求把一个字符串的首字母转成大写,其余为小写(只考虑英文大小写字母字符)

package cn.lianxi; public class DaXiao { public static void main(String[] args) { /*需求把一个字符串的首字母转成大写,其余为小写(只考虑英文大小写字母字符) * 分析: * 1.先获取第一个字符 * 2.获取除了第一个字符的以外字符 * 3.把第一个字符转成大写 * 4.把第一个字符转成大写 * 5.把除第一个字符以外的字符转成小写 * 6.字符串拼接 * */ String str = "helloWORLD&

输入5个学生的名字(英文),使用冒泡排序按从大到小排序。 提示:涉及到字符串数组,一个字符串是一个一维字符数组;一个 字符串数组就是一个二维字符数组。

#include <stdio.h>#include <string.h> /*输入5个学生的名字(英文),使用冒泡排序按从大到小排序.提示:涉及到字符串数组,一个字符串是一个一维字符数组:一个字符串数组就是一个二维字符数组.*/ void main(){ char stuNames[5][100]; char tmp[100]; int i = 0,j = 0; for(i = 0; i < 5; i++) { printf("请输入第%d个学生的名字:"

给定一个字符串,找到第一个只出现一次的字符的下标,找不到输出-1。

1. 给定一个字符串,找到第一个只出现一次的字符的下标,找不到输出-1. sample: 输入:"abcdefcba" 输出:3 解法:先遍历字符串,用一个map记录每个字符出现的次数,再次遍历字符串,找到第一个只出现一次的字符,复杂度为O(n). #include <iostream> #include <string> #include <cstring> #include <map> using namespace std; int

Base64 报错 的解决办法 (Base-64 字符数组或字符串的长度无效。, 输入的不是有效的 Base-64 字符串,因为它包含非 Base-64 字符、两个以上的填充字符,或者填充字符间包含非法字符。)

Base64 报错 的解决办法, 报错如下:1. FormatException: The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or a non-white space character among the padding characters. ]    System.Convert.FromBase64Str