jstl 字符串处理函数

Yorikinatsu 分享 时间: 收藏本文

【简介】感谢网友“Yorikinatsu”参与投稿,下面是小编整理的jstl 字符串处理函数(共8篇),希望能帮助到大家!

篇1:jstl 字符串处理函数

作者: 字体:[增加 减小] 类型:

最近用jstl1.0 的时候经常要在页面上对字符串做改动,在网上找了一个写的不错的,借鉴一下

JSTL使用表达式来简化页面的代码,这对一些标准的方法,例如bean的getter/setter方法,请求参数或者context以及session中的数据的访问非常方便,但是我们在实际应用中经常需要在页面调用对象的某些方法,例如我需要调用字符串的length方法来获取字符串的长度时,在以往的开发过程中我们必须把对象先转为String类,然后在调用其length方法,这样的代码繁琐而且容易出错,

因此JSTL内置了几个用于字符串操作的方法,可以直接在表达式中使用,大大的简化了代码,提供代码的可读性。在JSTL的表达是中要使用一个函数,其格式如下

${ns:methodName(args....)}

在使用这些函数之前必须在JSP中引入标准函数的声明

<%@ taglib prefix=“fn” uri=“java.sun.com/jsp/jstl/functions” %>

下面是JSTL中自带的方法列表以及其描述

函数名函数说明使用举例contains判断字符串是否包含另外一个字符串containsIgnoreCase判断字符串是否包含另外一个字符串(大小写无关)endsWith判断字符串是否以另外字符串结束escapeXml把一些字符转成XML表示,例如<字符应该转为><${fn:escapeXml(param:info)}indexOf子字符串在母字符串中出现的位置${fn:indexOf(name, “-”)}join将数组中的数据联合成一个新字符串,并使用指定字符格开${fn:join(array, “;”)}length获取字符串的长度,或者数组的大小${fn:length(shoppingCart.products)}replace替换字符串中指定的字符${fn:replace(text, “-”, “•”)}split把字符串按照指定字符切分${fn:split(customerNames, “;”)}startsWith判断字符串是否以某个子串开始substring获取子串${fn:substring(zip, 6, -1)}substringAfter

获取从某个字符所在位置开始的子串

${fn:substringAfter(zip, “-”)}substringBefore获取从开始到某个字符所在位置的子串${fn:substringBefore(zip, “-”)}toLowerCase转为小写${fn.toLowerCase(product.name)}toUpperCase转为大写字符${fn.UpperCase(product.name)}trim去除字符串前后的空格${fn.trim(name)}

篇2:C++常用字符串处理函数及使用示例.net

char *strcpy(char *s1, const char *s2) 将字符串s2复制到字符串数组s1中,返回s1的值 char *strncpy(char *s1, const char *s2, size_t n) 将字符串s2中最多n个字符复制到字符串数组s1中,返回s1的值 char *strcat(char *s1, const char *s2) 将字符串s2添

char *strcpy(char *s1, const char *s2)

将字符串s2复制到字符串数组s1中,返回s1的值

char *strncpy(char *s1, const char *s2, size_t n)

将字符串s2中最多n个字符复制到字符串数组s1中,返回s1的值

char *strcat(char *s1, const char *s2)

将字符串s2添加到字符串s1的后面,s2的第一个字符重定义s1的null终止符。返回s1的值

char *strncat(char *s1, const char *s2, size_t n)

将字符串s2中最多n个字符添加到字符串s1的后面。s2的第一个字符重定义s1的null终止符。返回s1的值

int strcmp(const char *s1, const char *s2)

比较字符串s1和字符串s2。函数在s1等于、小于或大于s2时分别返回0、小于0或者大于0的值

int strncmp(const char *s1, const char *s2, size_t n)

比较字符串s1中的n个字符和字符串s2。函数在s1等于、小于或大于s2时分别返回0、小于0或者大于0的值

char * strtok(char *s1,const char *s2)

用一系列strtok调用将s1字符串标记化(将字符串分成各个逻辑组件,如同一行文本中的每个单词),用字符串s2所包含的字符分隔。 首次调用时包含s1为第一个参数,后面调用时继续标记化同一字符串,包含NULL为第一个参数。每次调用时返回当前标记指针。如果函数调用时不再有更多标记,则返回NULL

size_t strlen(const char *s)

确定字符串长度,返回null终止符之前的字符数

使用示例:

//源代码在Visual c++6.0环境下编译通过

#include

#include

int main

{

char str1[50] = “Happy birthday to ”, str2[] = “coffeehu”;

char temp1[100],temp2[6], * temp;

char str[] = “This is a sentence with 7 tokens”;

strcpy(temp1, str1);

strncpy(temp2, str1, 5);

temp2[5] = '\\0';

cout << “strcpy result: ” <<< “\\n”;

cout << “strncpy result: ” << temp2 << “\\n”;

cout << “strcat result: ” << strcat(str1, str2) << “\\n”;

cout << “strncat result: ” << strncat(str1, str2, 6) <<“\\n”;

cout << “strcmp result: ” << strcmp(temp2,“Happ”) <<“\\n”;

cout << “strncmp result: ” << strncmp(str1,“Happy”,5) <<“\\n”;

//strtok function eg.

temp = strtok(str, “ ”);

while(temp != NULL)

{

cout << temp <<'\\n';

temp = strtok(NULL, “ ”);

}

cout << “strlen result: ” << strlen(str2) <<“\\n”;

return 0;

}

原文转自:www.ltesting.net

篇3:python处理字符串

#将mac地址更改成一定格式,如mac='902B345FB021'改为mac='90-2B-34-5F-B0-21',

#其实就是字符串按照固定长度拆分,2位数字拆分

#!/usr/bin/python

# -*- coding: utf-8 -*-

import re

A = open('mac.txt','r')

a = A.readlines()

for aa in a:

b=re.findall(r'.{2}',aa)

c='-'.join(b)

print c

A.close()

每两个字符拆出来,放入一个列表,再用join连接

篇4:Java 字符串处理

刚学的,注释写的很全就不作解释了,也可能有注释不全的 欢迎各路大神与我讨论交流,楼主小白菜一颗,,,,

package Class.String;

import java.util.Scanner;

/**

* 字符串测试

* @author Administrator

*

*/

public class StringTest {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

//定义两个默认字符串

String entry = “aBcDa”;

String entry1 = “    1,2,3,4,1”;

System.out.println(“* * * * * * * * * * * * * * * * * * *”);

System.out.println(“第一个字符串默认为:”+entry+“\\n第二个字符串默认为:”+entry1);

System.out.println(“* * * * * * * * * * * * * * * * * * *”);

int seat = entry.indexOf(“c”);  //找到c的位置,没有seat值就为负一

System.out.println(“\\n”+entry+“从0开始数 “c”在第 ”+seat+“ 位\\n”);

System.out.println(entry+“共有 ”+entry.length+“ 个字符”);  //length()获得字符串长度

String x = entry.toLowerCase();  //toLowerCase()转换为小写

String d = entry.toUpperCase();  //toUpperCase()转换为大写

System.out.println(“\\n小写:”+x+“\\n大写:”+d);

String a1 = “abcda”;  //输入的d 与a1 忽略大小写比较

boolean a = entry.equalsIgnoreCase(a1);  //如果忽略大小写相等a则为true  equalsIgnoreCase()忽略大小写

if (a) System.out.println(“\\n密码为”+entry+“ 忽略大小写”);

String add = entry+entry1;        //方法1

String add1 = entry1.concat(entry);  //方法2

System.out.println(“\\n两字符串连接:方法1 ”+add+“ 方法2 ”+add1);

int appear = entry1.indexOf(“1”);      //找 12341 中第一个1的位置

int appear1 = entry1.lastIndexOf(“1”);    //找 12341 中最后一个1的位置

int appear2 = entry.indexOf(97);        //b的位置,b的ASCII码为98

int appear3 = entry.lastIndexOf(97);    //b的位置,b的ASCII码为98

System.out.println(“\\n从0开始数 ”+entry1+“ 中第一个1的位置:”+appear+“\\t中最后一个1的位置”+appear1);

System.out.println(“\\n从0开始数 ”+entry+“ 中第一个 a 的位置:”+appear2+“\\t中最后一个 a 的位置”+appear3);

String extract = entry.substring(2);      //abcda从第二位开始截取

String extract1 = entry.substring(1, 4);  //abcda从第二位开始截取

System.out.println(“\\n”+entry+“从0开始数 第二位(包含)开始截取后面全部内容,截取获得:”+extract);

System.out.println(“\\n”+entry+“指定范围截取,从0开始数 第一位开始(包含)到第四位(不包含)之间内容:”+extract1);

String ut = entry1.trim();      //去掉空格

System.out.println(“\\n去空格操作”+entry1+“ 去掉空格后输出 :”+out);

String split[] = out.split(“,”);  //以 “,” 为拆分标志,将拆分内容存到split数组里

System.out.println(“\\n以“,”为拆分标志,拆分后”);

int j = 0;

for (int i=0; i

System.out.println(“\\n第”+(i+1)+“个:”+split[i]);

j++;

}

System.out.println(“\\n共拆为”+j+“个字符用字符串数组存”);

//StringBuffer类测试

StringBuffer sb = new StringBuffer(“\\n你好”); //创建,初始值为 你好

int num=112;

StringBuffer sb1 = sb.append(“ 我很好 ”);   //第一次添加

System.out.println(sb1);

StringBuffer sb2 = sb1.append(“呀”);       //第二次添加,单个字符可为 String 型 也可为char型

System.out.println(sb2);

StringBuffer sb3 = sb2.append(num);      //第三次添加

System.out.println(sb3);

String b = “helloword.java”;  //创建字符串

System.out.println(“\\n* * * * * * * * * * * * * * * * *”);

System.out.println(“一个默认字符串:”+b);

System.out.println(“* * * * * * * * * * * * * * * * *”);

System.out.println(“\\n替换前:”+b);

b = b.replace(“ll”, “EE”);    //替换方法,将 “ll”替换为 “EE”

System.out.println(“替换后:”+b);

System.out.println(“\\n”+b+“ 是否以 .jav 结尾:”+b.endsWith(“.jav”));  //判断是否以为“.jav”结尾,很明显 是以“.java”结尾的 所以结果为 false

System.out.println(b+“ 是否以 h 开头:”+b.startsWith(“h”));    //判断是否以“h”为开头的,这里“helloword.java”是以“h”开头的所以结果为 true

StringBuffer g = new StringBuffer(“abcde”);    //新创建一个StringBuffer型字符串值为“aaaaa”

System.out.println(“\\n* * * * * * * * * * * * *”);

System.out.println(“一个默认字符串:”+g);

System.out.println(“* * * * * * * * * * * * *”);

g.setCharAt(1, 'B');    //指定替换

System.out.println(“\\n从0开始数将第2个字符替换为 B:”+g);

g.deleteCharAt(1);    //指定删除

System.out.println(“\\n从0开始数将第2个字符删除:”+g);

}

篇5:C语言 字符串的内存拷贝处理函数

对于字符串来说,我们运用字符串中的str类别的函数,但是我们还有一些关于内存的拷贝函数,

C语言 字符串的内存拷贝处理函数

。他们操作的对象是内存,然后可以接受任何类型的数据进行拷贝。

这个是里面的memcpy,然后我们一起查看一下MSDN看一看他的原型:

void *memcpy(void *dest,const void *src,size_t count);

与strcpy不同的就是添加了第三个参数,确定操作的字节数,然后参数类型还有返回类型都是void*

,这表示他可以拷贝任意类型的数据。

然后我们看一下实现:

memcpy:

void *my_memcpy(void *str,const void *Dstr,int count) //从内存地址开始改变,并确定改变长度,所以用万能类型去接受{ char *pstr = (char *)str; char *pDstr = (char *)Dstr;assert((str!=NULL) && (Dstr != NULL)); if(str == Dstr) //位置相同情况下直接返回需要改变的 return (char *)Dstr; while(count-- >0){*pstr++ = *pDstr++;} return str;}

然后会出现一个问题,如果我们拷贝的数据中Dstr的起始位置在STR操作之间,那么在改变str时会出现副作用,将导致我们的拷贝结果不正确,所以我们应该考虑到会覆盖的情况,

在函数库中有一个memmove函数。

memmove:

void *my_memmove(void *pst,const void *Dpst,int size){ void *p = pst; char *pstA = (char *)pst; char *pstB = (char *)Dpst;assert((pst != NULL) &&(Dpst != NULL)); if(pstB

就是遇到被拷贝的空间起始处在拷贝空间中,将会遇到拷贝内存覆盖的现象。在这种情况下我们将考虑从尾部进行拷贝。所以进行了判断。

篇6:字符串的输出处理

字符串的输出处理

我对字符串的输出是比较头疼的,就是在技巧方面把握的不好,记得刚开始接触字符串的时候,就是要正着输入倒着输,。。。。。都不会,就是找不到技巧,下面我会从简单到复杂分析一下这种题型,可能不全,请见谅。

一.

先说一下题意,就是随便输入一句话如“hello my friend”,输出的时候是“dneirf ym olleh”,大家看出什么了没有,就是正着输入,倒着输出,先看一下主要的代码内容吧

#include#includeint main{ int i, len; char a[1000]; while(gets(a)) { len=strlen(a); for(i=len-1;i>=0;i--) { printf(“%c”, a[i]); } printf(“\\n”); } return 0;}

简单的已经话,就是“正着输入,倒着输出”,要注意的是因为这句话中有空格,所以,要用gets,scanf()的特性是遇到空格或者回车就会停止,大家可以试一下,这样有助于加深自己的印象。

二.

先说一下大体意思,就是也是随便输入一句话,如“hello my friend”,输出的时候是“olleh ym dneirf”,大家看出什么没有,就是各个单词的位置还是原来的位置,但是,都倒着输出了。下面看一道例题

Word Reversal

Description

For each list of words, output a line with each word reversed without changing the order of the words.

This problem contains multiple test cases!

The first line of a multiple input is an integer N, then a blank line followed by N input blocks. Each input block is in the format indicated in the problem description. There is a blank line between input blocks.

The output format consists of N output blocks. There is a blank line between output blocks.

Input

You will be given a number of test cases. The first line contains a positive integer indicating the number of cases to follow. Each case is given on a line containing a list of words separated by one space, and each word contains only uppercase and lowercase letters.

Output

For each test case, print the output on one line.

Sample Input

1

3

I am happy today

To be or not to be

I want to win the practice contest

Sample Output

I ma yppah yadot

oT eb ro ton ot eb

I tnaw ot niw eht ecitcarp tsetnoc

下面先看一下我的代码吧

#include#includeint main(){ int n, i, len, j, l, m, k; char a[100]; while(~scanf(“%d”,&m)) { for(k=0;k

这道题要思路是只要是空格前面的就要倒着输出,要特别注意的是最后的一个单词,这样我们就知道要特殊处理啦,

还有的题型是从大写的方面考虑的,以后一定细说,其实要把字符串驾驭的很好很好也是不易的,所以,加油吧!

篇7:模拟字符串处理函数 stuff 处理 Ntext 字段数据库教程

函数|字符串

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_stuff]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[p_stuff]GO

/*--Ntext字段处理

模拟字符串处理函数 stuff 完成表中 ntext 字段的 stuff 处理 注意,表中需要有列名为:id 的主键(或标识字段),数据类型为int 如果没有这个主键字段,或者是其他类型,则对应的需要修改存储过程

--邹建 .07--*/

/*--调用示例

--测试数据 create table tb(id int identity(1,1),content ntext) insert tb select 'a;sd' union all select 'a;sdfkjas2qasdfdfsg45yhjhdfg45645a'  --调用存储过程,将第8~9的字符替换成'中国' exec p_stuff 'tb','content',8,2,'中国','' select * from tb  drop table tb--*/

create proc p_stuff@tbname sysname, --要处理的表名@fdname sysname, --text/ntext字段名@start int=null, --开始位置,NULL表示追加数据@length int=null, --替换的长度@str nvarchar(4000),--要插入的字符串@where nvarchar(1000)=''--要处理的记录的条件asif @str is null returndeclare @s nvarchar(4000)set @s='declare @id int,@ptr varbinary(16),@start1 int

declare tb cursor local for select id,start=datalength(['+@fdname+'])/2from ['+@tbname+']'+case isnull(@where,'') when '' then '' else ' where '+@where end+'

open tb fetch tb into @id,@start1while @@fetch_status=0begin select @ptr=textptr(content) from ['+@tbname+'] where id=@id

if @start is null or @start1<@start  updatetext ['+@tbname+'].['+@fdname+'] @ptr null null @str else begin  set @start1=@start-1  updatetext ['+@tbname+'].['+@fdname+'] @ptr @start1 @length @str end fetch tb into @id,@start1endclose tbdeallocate tb'exec sp_executesql @s ,N'@start int,@length int,@str nvarchar(4000)' ,@start,@length,@strgo

篇8:asp实现截取字符串函数

这篇文章主要介绍了asp实现截取字符串函数,代码非常简洁,也非常实用,这里分享给大家,有需要的小伙伴参考下吧,

如果标题过长,因为页面布局的限制,只能列表10个字符,这个函数会帮你实现的

代码如下:

‘截取字符串 strvalue(标题,字数)

function strvalue(str,lennum)

dim p_num

dim i

if strlen(str)<=lennum then

strvalue=str

else

p_num=0

x=0

do while not p_num >lennum-2

x=x+1

if asc(mid(str,x,1))<0 then

p_num=int(p_num) + 2

else

p_num=int(p_num) + 1

end if

strvalue=left(trim(str),x)&“…”

loop

end if

end function

function strlen(str)

dim page_len

page_len=0

strlen=0

if trim(str)“” then

page_len=len(trim(str))

for xx=1 to page_len

if asc(mid(str,xx,1))<0 then

strlen=int(strlen) + 2

else

strlen=int(strlen) + 1

end if

next

end if

end function

使用方法:

代码如下:

<%=strvalue(“准确的编程语言,可正确对代码语法着色,输入简单几个字的代码片段说明”,10)%>

以上所述就是本文的全部内容了,希望大家能够喜欢,

相关专题 字符串函数