jstl 字符串处理函数
【简介】感谢网友“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判断字符串是否包含另外一个字符串
获取从某个字符所在位置开始的子串
${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: ” <
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语言 字符串的内存拷贝处理函数
对于字符串来说,我们运用字符串 C语言 字符串的内存拷贝处理函数
这个是
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 简单的已经话,就是“正着输入,倒着输出”,要注意的是因为这句话中有空格,所以,要用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 oT eb ro ton ot eb I tnaw ot niw eht ecitcarp tsetnoc 下面先看一下我的代码吧 #include 这道题要思路是只要是空格前面的就要倒着输出,要特别注意的是最后的一个单词,这样我们就知道要特殊处理啦, 还有的题型是从大写的方面考虑的,以后一定细说,其实要把字符串驾驭的很好很好也是不易的,所以,加油吧! 函数|字符串 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 这篇文章主要介绍了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)%> 以上所述就是本文的全部内容了,希望大家能够喜欢,篇7:模拟字符串处理函数 stuff 处理 Ntext 字段数据库教程
篇8:asp实现截取字符串函数