文档库 最新最全的文档下载
当前位置:文档库 › Java中字符串中子串的查找共有四种方法(indexof())

Java中字符串中子串的查找共有四种方法(indexof())

Java中字符串中子串的查找共有四种方法(indexof())
Java中字符串中子串的查找共有四种方法(indexof())

Java中字符串中子串的查找共有四种方法,如下:

1、int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引。

2、int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。

3、int lastIndexOf(String str) :返回在此字符串中最右边出现的指定子字符串的索引。

4、int lastIndexOf(String str, int startIndex) :从指定的索引处开始向后搜索,返回在此字符串中最后一次出现的指定子字符串的索引。

indexof()用法说明

indexof()

返回 String 对象内第一次出现子字符串的字符位置。

string.indexOf(subString[, startIndex])

参数

string

必选项。String 对象或文字。

subString 必选项。

要在 String 对象中查找的子字符串。

starIndex 可选项。

该整数值指出在 String 对象内开始查找的索引。如果省略,则从字符串的开始处查找。

说明

indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置。如果没有找到子字符串,则返回-1。

如果 startindex 是负数,则 startindex 被当作零。如果它比最大的字符位置索引还大,则它被当作最大的可能索引。

从左向右执行查找。否则,该方法与 lastIndexOf 相同。

示例

下面的示例说明了 indexOf 方法的用法。

function IndexDemo(str2){

var str1 = "BABEBIBOBUBABEBIBOBU"

var s = str1.indexOf(str2);

return(s);

}

public class FirstDemo {

/**

*API中String的常用方法

*/

// 查找指定字符串是否存在

public static void main(String[] args) {

String str1 = "abcdefghijklmnabc";

// 从头开始查找是否存在指定的字符

System.out.println(str1.indexOf("c"));

// 从第四个字符位置开始往后继续查找

System.out.println(str1.indexOf("c", 3));

//若指定字符串中没有该字符则系统返回-1

System.out.println(str1.indexOf("x"));

}

excel中个单元格中有文字字母字符和数字如何能把数字单独提取出来提取数字

e x c e l中个单元格中有文字字母字符和数字如何能把数字单独提取出 来提取数字 集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]

excel中一个单元格中有文字字母字符和数字如何能把数字单独提取出来2011-04-13 11:25匿名|分类:|浏览1375次 如A1中 A本月电费收入(美兰供电所)(对帐标志: 想在B中表示为 最好能教一个方法十分感谢 我有更好的答案 按默认排序| 2条回答 |2011-04-13 11:32|十五级 在EXECL理,按ALT+F11,插入-模块,复制下列语句 Function SplitNumEng(str As String, sty As Byte) Dim StrA As String Dim StrB As String Dim StrC As String Dim i As Integer Dim SigS As String For i = 1 To Len(str) SigS = Mid(str, i, 1) If SigS Like "[a-zA-Z]" Then

StrA = StrA & SigS ElseIf SigS Like "#" Then StrB = StrB & SigS Else StrC = StrC & SigS End If Next i Select Case sty Case 1 SplitNumEng = StrA Case 2 SplitNumEng = StrB Case Else SplitNumEng = StrC End Select End Function 比如你的数据在A1 BI输入 =SplitNumEng(A1,1) 表示提取字母 =SplitNumEng(A1,2) 表示提取数字

JAVA字符串格式化-String.format()的使用

JAVA字符串格式化-String.format()的使用 常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处。format()方法有两种重载形式。 format(String format, Object... args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。 format(Locale locale, String format, Object... args) 使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。 显示不同转换符实现不同数据类型到字符串的转换,如图所示。 转换符说明示例 %s 字符串类型"mingrisoft" %c 字符类型'm' %b 布尔类型true %d 整数类型(十进制)99 %x 整数类型(十六进制)FF %o 整数类型(八进制)77 %f 浮点类型99.99 %a 十六进制浮点类型FF.35AE %e 指数类型9.38e+5 %g 通用浮点类型(f和e类型中较短的) %h 散列码 %% 百分比类型% %n 换行符 %tx 日期与时间类型(x代表不同的日期与时间转换符 测试用例 [java]view plaincopy 1.public static void main(String[] args) { 2. String str=null;

3. str=String.format("Hi,%s", "王力"); 4. System.out.println(str); 5. str=String.format("Hi,%s:%s.%s", "王南","王力","王张"); 6. System.out.println(str); 7. System.out.printf("字母a的大写是:%c %n", 'A'); 8. System.out.printf("3>7的结果是:%b %n", 3>7); 9. System.out.printf("100的一半是:%d %n", 100/2); 10. System.out.printf("100的16进制数是:%x %n", 100); 11. System.out.printf("100的8进制数是:%o %n", 100); 12. System.out.printf("50元的书打8.5折扣是:%f 元%n", 50*0.85); 13. System.out.printf("上面价格的16进制数是:%a %n", 50*0.85); 14. System.out.printf("上面价格的指数表示:%e %n", 50*0.85); 15. System.out.printf("上面价格的指数和浮点数结果的长度较短的 是:%g %n", 50*0.85); 16. System.out.printf("上面的折扣是%d%% %n", 85); 17. System.out.printf("字母A的散列码是:%h %n", 'A'); 18.} 输出结果 [plain]view plaincopy 1.Hi,王力 2.Hi,王南:王力.王张 3.字母a的大写是:A 4.3>7的结果是:false 5.100的一半是:50 6.100的16进制数是:64 7.100的8进制数是:144 8.50元的书打8.5折扣是:42.500000 元 9.上面价格的16进制数是:0x1.54p5 10.上面价格的指数表示:4.250000e+01 11.上面价格的指数和浮点数结果的长度较短的是:42.5000 12.上面的折扣是85% 13.字母A的散列码是:41 搭配转换符的标志,如图所示。 标志说明示例结果+ 为正数或者负数添加符号("%+d",15) +15 ?左对齐("%-5d",15) |15 | 0 数字前面补0 ("%04d", 99) 0099 空格在整数之前添加指定数量的 空格 ("% 4d", 99) | 99| , 以“,”对数字分组("%,f", 9999.99) 9,999.990000

excel中取出字符串中的数字

excel中取出字符串中的数字 1.数据- "a12345y" 如何自动撷取其中的数字 2.数据- "12345" 如何自动只撷取其中间三个的数位(即234)放於其它格上 如果你的数据有固定的长度和格式,公式可以简单些,如,前后各有1位字母: A1="a12345y" B1=Mid(A1,2,5) 如果前后字母个数不固定: B1=MID(A1,MA TCH(0,0*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),),MATCH(0,0*MID(A1,ROW(IN DIRECT("1:"&LEN(A1))),1))-MATCH(0,0*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),)+1) 数组公式,按Ctrl+Shift+Enter三键结束。 1、截取字符串中的一部分,用函数MID()。 A1="a12345y" 公式最外层是Mid()函数,该函数的格式是: Mid(文本,开始位置,长度) 对应公式是: MID(A1,MATCH(0,0*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),),MATCH(0,0*MID(A1,ROW(INDIR ECT("1:"&LEN(A1))),1))-MATCH(0,0*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),)+1) 2、长度=末位置-首位置+1。 其中MATCH()公式有不同的两个: 文本A1中第1个数字所在的位置:MATCH(0,0*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),) 文本A1中最后1个数字所在的位置:MATCH(0,0*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)) 两个公式不同之处,在于最后一个逗号。公式什么意思先别管,你只要知道: 长度=最后1个数字的位置-第1个数字的位置+1 本例中:6-2+1=5,数字长度为5。 3、拆散字符串。 下面公式取出字符串中的每一粒字符: MID(A1,1,1)="a" MID(A1,2,1)="1" …… MID(A1,6,1)="5" MID(A1,7,1)="y" 下面公式返回的是拆散后的一串字符(数组): MID(A1,{1;2;3;4;5;6;7},1)={"a";"1";"2";"3";"4";"5";"y"} 其中{1;2;3;4;5;6;7}用ROW(INDIRECT("1:"&LEN(A1)))计算所得。 这是数组公式中的一个基本技巧,如果还不懂,请从固顶的帖子中找到并学习它。 在编辑栏中,请用鼠标选取MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1) 然后按F9可以看到上面的结果。 4、0乘以任何数都得0吗? 你一定不会怀疑。 还是在编辑栏,请继续用鼠标选择: 0*{"a";"1";"2";"3";"4";"5";"y"},或者选择: 0*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),按F9,结果显示为: {#VALUE!;0;0;0;0;0;#VALUE!}。真的不是“都得0”。 里面除了0,还有错误值。个数与原来数组元素的个数相同。

Java统计字符串中每个字符出现次数

Java统计字符串中每个字符出现次数package com.perry.test; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /** * * @author perry_zhao * 统计一个字符串中每个字符出现的次数(不忽略大小写) */ public class CountStr { public Map count(String str){ System.out.println("需要统计的字符串:"+str+"准备开始统计每个字符出现的次数..."); Map map = new HashMap(); String temp =""; for(int i=0; i

Java分割字符串

https://www.wendangku.net/doc/f513307368.html,ng.String 的 split() 方法, JDK 1.4 or later public String[] split(String regex,int limit) 示例代码 public class StringSplit { public static void main(String[] args) { String sourceStr = "1,2,3,4,5"; String[] sourceStrArray = sourceStr.split(","); for (int i = 0; i < sourceStrArray.length; i++) { System.out.println(sourceStrArray[i]); } // 最多分割出3个字符串 int maxSplit = 3; sourceStrArray = sourceStr.split(",", maxSplit); for (int i = 0; i < sourceStrArray.length; i++) { System.out.println(sourceStrArray[i]); } } } 输出结果: 1 2 3 4 5 1 2 3,4,5

split 的实现直接调用的 matcher 类的 split 的方法。在使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果。在正则表达式中有特殊的含义的字符,我们使用的时候必须进行转义,示例: public class StringSplit { public static void main(String[] args) { String value = "192.168.128.33"; // 注意要加\\,要不出不来,yeah String[] names = value.split("\\."); for (int i = 0; i < names.length; i++) { System.out.println(names[i]); } } } split分隔符总结 1.字符"|","*","+"都得加上转义字符,前面加上"\\"。 2.而如果是"\",那么就得写成"\\\\"。 3.如果一个字符串中有多个分隔符,可以用"|"作为连字符。 比如:String str = "Java string-split#test",可以用Str.split(" |-|#")把每个字符串分开。这样就把字符串分成了3个子字符串。 java.util.Tokenizer JDK 1.0 or later StringTokenizer StringTokenizer 类允许应用程序将字符串分解为标记。StringTokenizer 是出于兼容性的原因而被保留的遗留类(虽然在新代码中并不鼓励使用它)。建议所有寻求此功能的人使用String 的 split 方法或 java.util.regex 包。 代码示例 public class StringSplit { public static void main(String[] args) { String ip = "192.168.128.33"; StringTokenizer token=new StringTokenizer(ip,"."); while(token.hasMoreElements()){

提取excel中的一段数字、文字、符号方法

一、单元格A1中有如下内容:要提取出数字 经测试下列公式好用 提取Excel单元格中连续的数字的函数公式是: =LOOKUP(9E+307,--MID(A1,MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1&1234567890)),ROW($1:$8))) 或者 =LOOKUP(9E+307,--MID(H2,MIN(FIND({0;1;2;3;4;5;6;7;8;9},H2&1234567890)),ROW(INDIRECT("1:"&LEN(H2))))) 解释一下这个公式 FIND函数——查询文本所在位置 FIND(find_text,within_text,[start_num]) FIND(需查找的文本,包含查找文本的单元格,开始查找单元格的字符位置(可选)) 此处FIND函数是搜索{1,2,3,4,5,6,7,8,9,0}数字在“A1&1234567890”中所在的位置; A1&1234567890的目的是在用FIND函数查询时,不出现错误值,使之后的MIN函数可以正常运行。 即FIND({1,2,3,4,5,6,7,8,9,0},“小王联系电话58670098负责财务1234567890”) 选取划黑后按F9,得出的位置为:{19,20,21,22,7,9,10,8,13,11} MIN函数——返回列表中的最小值 MIN(number1,number2,……) MIN(数字1,数字2,……)

将FIND所得结果{19,20,21,22,7,9,10,8,13,11}带入MIN函数,最小值所得为7,正是第一个数值出现的位置; 也正是之前FIND函数中使用A1&1234567890的原因。 MID函数——返回文本字符串从指定位置开始特定数目的字符,即提取某段字符。 MID(text,start_num,num_chars) MID(被提取的文本或单元格,开始提取的字符位置,提取的字符个数) 将上述MIN函数所得带入MID(A1,7,ROW($1:$8); ROW($1:$8)使用row函数不是用来计算行,而是借用其作为常量。当然1:8是可以修改的,只要大于数值个数就不影响结果。 --MID(……)中“--”的作用是将MID得出的结果变为数值,使其可以被LOOKUP函数查询到。 MID(……)选取划黑后按F9{"5";"58";"586";"5867";"58670";"586700";"5867009";"58670098"} --MID(……)选取划黑后按F9{5;58;586;5867;58670;586700;5867009;58670098} LOOKUP函数——从返回某个查询的值(数组形式) LOOKUP(lookup_value,array) LOOKUP(在数组中查找的值,数组范围区域)

excel中个单元格中有文字字母字符和数字如何能把数字单独提取出来提取数字

excel中一个单元格中有文字字母字符和数字如何能把数字单独提取出来?2011-04-13 11:25匿名?|?分类:办公软件?|?浏览1375次 如A1中 A本月电费收入(美兰供电所)(对帐标志:2010.01.07) 想在B中表示为 20100107 最好能教一个方法十分感谢 我有更好的答案 按默认排序|按时间排序 2条回答 检举|2011-04-13 11:32Mrpine|十五级 在EXECL理,按ALT+F11,插入-模块,复制下列语句 Function SplitNumEng(str As String, sty As Byte) Dim StrA As String Dim StrB As String Dim StrC As String Dim i As Integer Dim SigS As String For i = 1 To Len(str) SigS = Mid(str, i, 1) If SigS Like "[a-zA-Z]" Then

StrA = StrA & SigS ElseIf SigS Like "#" Then StrB = StrB & SigS Else StrC = StrC & SigS End If Next i Select Case sty Case 1 SplitNumEng = StrA Case 2 SplitNumEng = StrB Case Else SplitNumEng = StrC End Select End Function 比如你的数据在A1 BI输入 =SplitNumEng(A1,1) 表示提取字母 =SplitNumEng(A1,2) 表示提取数字

Java字符串查找

Java中字符串中子串的查找共有四种方法,如下: 1、int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引。 2、int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。 3、int lastIndexOf(String str) :返回在此字符串中最右边出现的指定子字符串的索引。 4、int lastIndexOf(String str, int startIndex) :从指定的索引处开始向后搜索,返回在此字符串中最后一次出现的指定子字符串的索引。 indexof()用法说明 indexof() 返回String 对象内第一次出现子字符串的字符位置。 string.indexOf(subString[, startIndex]) 参数 string 必选项。String 对象或文字。 subString 必选项。 要在String 对象中查找的子字符串。 starIndex 可选项。 该整数值指出在String 对象内开始查找的索引。如果省略,则从字符串的开始处查找。 说明 indexOf 方法返回一个整数值,指出String 对象内子字符串的开始位置。如果没有找到子字符串,则返回-1。 如果startindex 是负数,则startindex 被当作零。如果它比最大的字符位置索引还大,则它被当作最大的可能索引。 从左向右执行查找。否则,该方法与lastIndexOf 相同。 示例 下面的示例说明了indexOf 方法的用法。 function IndexDemo(str2){ var str1 = "BABEBIBOBUBABEBIBOBU" var s = str1.indexOf(str2); return(s); }

java代码_去掉重复字符

注:此篇文档是转载别人的,对原作者表示感谢。 import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; //去掉重复字符串的工具类 public class RemoveDuplicateChar { static StringBuffer sb = new StringBuffer(); // 普通的方法,不使用集合 static void removeDuplicateByOriginalMethod(String str) { System.out.println("方法一:普通方法"); char[] cy = str.toCharArray(); String temp = ""; for (int i = 0; i < cy.length; i++) { if (temp.indexOf(cy[i]) == -1) { temp += cy[i]; } } System.out.println("去除重复字符后:" + temp); sb.setLength(0); } // 方法二,使用LinkedHashSet可以在去掉重复字符后按照原字符顺序排列字符 static void removeDuplicateByLinkedHashSet(String str, String[] ss, int len) { System.out.println("方法二:LinkedHashSet"); Set set = new LinkedHashSet(); iterate(set, ss, len); System.out.println("去除重复字符后:" + sb.toString()); // 清空StringBuffer对象sb sb.setLength(0); } // 方法三,使用ArrayList可以在去掉重复字符后按照原字符顺序排列字符 static void removeDuplicateByArrayList(String str, String[] ss, int len) { System.out.println("方法三:ArrayList"); List list = new ArrayList<>(); iterate(list, ss, len); System.out.println("去除重复字符后:" + sb.toString());

Java中截取字符串

Java中截取字符串——经本人验证通过 考题题干 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF"6,应该输出"我ABC",而不是"我ABC+汉的半个"。 试题分析 本面试题容易产生困惑的是中文字符和英文字符,在这里需要考虑汉字和英文字符的占用字节数问题,中文字符占两个字节,英文字符占一个字节,理解了这个,就很容易完成本题了。参考答案 具体代码实现如下: //package core_java; import java.util.Scanner; public class jiequzichuan { static String ss; // 要进行截取操作的字符串 static int n; // 截取的字符串的字节数 public static void main(String[] args) { System.out.println("请输入字符串:"); Scanner scStr = new Scanner(System.in); // 从键盘获取字符串 ss = scStr.next(); // 将Scanner对象中的内容以字符串的形式取出来 System.out.println("请输入字节数:"); Scanner scByte = new Scanner(System.in);// 从键盘获取字符串 n = scByte.nextInt(); // 将Scanner对象中的内容以数值的形式取出来 Interception(setValue()); // 方法与方法间的套用 } public static String[] setValue() { // 此方法的作用是将字符串转换成字符串数组 String[] string = new String[ss.length()];// 创建一个字符数组string for (int i = 0; i < string.length; i++) { string[i] = ss.substring(i, i + 1); // 将字符串ss中的第i个字符取出,放入字符数组中string中 } return string; // 将这个字符数组返回 } public static void Interception(String[] string) { int count = 0; String m = "[\u4e00-\u9fa5]"; // 汉字的正则表达试 System.out.println("以每" + n + "字节划分的字符串如下所示:"); for (int i = 0; i < string.length; i++) { if (string[i].matches(m)) {

java 字符串常用函数及其用法

java中的字符串也是一连串的字符。但是与许多其他的计算机语言将字符串作为字符数组处理不同,Java将字符串作为String类型对象来处理。将字符串作为内置的对象处理允许Java提供十分丰富的功能特性以方便处理字符串。下面是一些使用频率比较高的函数及其相关说明。 String相关函数 1)substring() 它有两种形式,第一种是:String substring(int startIndex) 第二种是:String substring(int startIndex,int endIndex) 2)concat() 连接两个字符串 例:String s="Welcome to "; String t=s.concat("AnHui"); 3)replace() 替换 它有两种形式,第一种形式用一个字符在调用字符串中所有出现某个字符的地方进行替换,形式如下: String replace(char original,char replacement) 例如:String s=”Hello”.replace(’l',’w'); 第二种形式是用一个字符序列替换另一个字符序列,形式如下: String replace(CharSequence original,CharSequence replacement) 4)trim() 去掉起始和结尾的空格 5)valueOf() 转换为字符串 6)toLowerCase() 转换为小写 7)toUpperCase() 转换为大写 8)length() 取得字符串的长度 例:char chars[]={’a',’b’.’c'}; String s=new String(chars); int len=s.length(); 9)charAt() 截取一个字符 例:char ch; ch=”abc”.charAt(1); 返回值为’b’ 10)getChars() 截取多个字符 void getChars(int sourceStart,int sourceEnd,char target[],int targetStart) sourceStart 指定了子串开始字符的下标 sourceEnd 指定了子串结束后的下一个字符的下标。因此,子串包含从sourceStart到sourceEnd-1的字符。

excel提取文本中数字公式

Excel提取文本中数字公式 第一种,如图,如果数字在中文的后面,那么使用公式:"=--RIGHT(A2,LEN(A2) *2-LENB(A2))"解释下:因为中文字符是占两个字节。而数字占一个字节。len 返回值是字符的个数。而lenb返回值是这个字符串占多少个字节。所以,这两个的差值就是一个有几个中文。LENB(A2)-LEN(A2) = 中文实际个数字符总数-中文个数=数字个数LEN(A2)-(LENB(A2)-LEN(A2) )=数字个数开括号数字个数=LEN(A2)*2-LENB(A2)。因为数字在右边,所以,利用RIGHT,获取从右边第一个开始到最后一个数字,就得到这个数值。 第二种:数字在中文的前面。实际上和第一种的方法是一样的,这儿只是取数字的时候,从左边开始。公式: "=--LEFT(A2,LEN(A2)*2-LENB(A2))" 第三种:混搭。这个其实就是加个判断,判断第一个字符是数字还是中文。如果是数字,那么就用上面的第二个公式,中文就用第一个公式。公式:“=IF(ISN UMBER(--LEFT(A2,1)),--RIGHT(A2,LEN(A2)*2-LENB(A2)),--LEFT(A2,LEN(A2)* 2-LENB(A2)))” ============================================= excel从特殊字符串提取指定数据

在日常工作中,常常会遇到以下的参数: 如何把直径单独提取出来,以便进行直径比较或按直径汇总。 步骤/方法 选定直径的提取单元格,输入如图所示的公式,回车即可。 下拉表格,将公式复制至其他表格,这样就完美的提取出规格数据中的直径数值,之后就可以进行数据分类和汇总了。

java字符串属性入门

1 join() 方法用于把数组中的所有元素放入一个字符串。 元素是通过指定的分隔符进行分隔的。 语法 arrayObject.join(separator ) 参数 描述 separator 可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。 返回值 返回一个字符串。该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入 separator 字符串而生成的。 实例 例子 1 在本例中,我们将创建一个数组,然后把它的所有元素放入一个字符串: 输出: George,John,Thomas 例子 2 在本例中,我们将使用分隔符来分隔数组中的元素:

输出: George.John.Thomas 2 lastIndex 属性用于规定下次匹配的起始位置。 语法 https://www.wendangku.net/doc/f513307368.html,stIndex 说明 该属性存放一个整数,它声明的是上一次匹配文本之后的第一个字符的位置。 上次匹配的结果是由方法 RegExp.exec() 和 RegExp.test() 找到的,它们都以lastIndex 属性所指的位置作为下次检索的起始点。这样,就可以通过反复调用这两个方法来遍历一个字符串中的所有匹配文本。 该属性是可读可写的。只要目标字符串的下一次搜索开始,就可以对它进行设置。当方法 exec() 或 test() 再也找不到可以匹配的文本时,它们会自动把lastIndex 属性重置为 0。 提示和注释 重要事项:不具有标志 g 和不表示全局模式的 RegExp 对象不能使用 lastIndex 属性。 提示:如果在成功地匹配了某个字符串之后就开始检索另一个新的字符串,需要手动地把这个属性设置为 0。

java程序:String字符串处理算法

public class MyString{ public MyString(){ } public int indexOf(String content,String find){ return indexOf(content,find,0); } public int indexOf(String content,String find,int beginIndex){ char[]ca_content=content.toCharArray(); int len_content=content.length(); int len_find=find.length(); for(int i=beginIndex;i

JAVA字符串转日期或日期转字符串

JAVA字符串转日期或日期转字符串(转) 2010-08-16 16:34:03| 分类:java |字号订阅 JAVA字符串转日期或日期转字符串(转) 文章中,用的API是SimpleDateFormat,它是属于 java.text.SimpleDateFormat,所以请记得import进 来! 用法: SimpleDateFormat sdf = new SimpleDateFormat( " yyyy-MM-dd HH:mm:ss " ); 这一行最重要,它确立了转换的格式,yyyy是完整的公元年,MM是月份,dd是日期,至于HH:mm:ss 就不需要我再解释了吧! PS:为什么有的格式大写,有的格式小写,那是怕避免混淆,例如MM 是月份,mm是分;HH是24小 时制,而hh是12小时制。 1.字符串转日期 2008-07-10 19:20:00 要把它转成日期,可以用 Date date = sdf.parse( " 2008-07-10 19:20:00 " ); 2.日期转字符串 假如把今天的日期转成字符串可用 String str = sdf.format(new Date()); 这个字符串内容的格式类似2008-07-10 19:20:00。 透过这个API我们便可以随心所欲的将日期转成我们想要的字符串格式,例如希望将日期输出成2008 年7月10日,我们可以这么写: SimpleDateFormat sdf = new SimpleDateFormat( " yyyy年MM月dd日 " ); String str = sdf.format(new Date());

C语言-获取一个字符串中的数字组

/*输入一个字符串,内有数字和非数字字符,如a123x456_17960? 302tab5876,将其中连续的数字作为一个整数,请统计出一共有多少个整数,输出这些整数,并求出最长的整数的位数。*/ 说明:i,j,k用来遍历,flag作为是否是数字的标志,max表示最长的连续数字串,str[100]用来存放输入的字符串,a[10][10]用来存放数字串,最多可存放10组连续的数字,,,, #include #include main() {int i,j=0,k,flag=0,max=0; char str[100],a[10][10]; printf("请输入一串字符(包括数字)\n"); gets(str); for(i=0;str[i]!='\0';i++) if(48<=str[i]&&str[i]<=57) {if(flag==0) {j++; k=0; a[j][k]=str[i]; k++; flag=1;} else if(str[i+1]=='\0') { a[j][k]=str[i]; a[j][k+1]='\0'; } else { a[j][k]=str[i]; k++; } } else if(flag==1) { if(k>max) max=k; a[j][k]='\0'; flag=0; } printf("输入的字符串中,最长的数字串有%d位数字。数字串一共有%d个,分别是:\n",max,j); for(i=1;i<=j;i++) printf("%s\n",a[i]); }

程序大致流程图如下(“<=”是赋值):

java中String的“==”和equals判断相等性

1. 首先String不属于8种基本数据类型,String是一个对象。 因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。 2. ne w String()和ne w String(“”)都是申明一个新的空字符串,是空串不是null; 3. String str=”kvill”与String str=ne w String (“kvill”)的区别: 在这里,我们不谈堆,也不谈栈,只先简单引入常量池这个简单的概念。 常量池(consta nt pool)指的是在编译期被确定,并被保存在已编译的.class文件中的 一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。 看例1: String s0=”kvill”; String s1=”kvill”; String s2=”kv”+ “ill”; Syste m.out.println( s0==s1 ); Syste m.out.println( s0==s2 ); 结果为: true

true 首先,我们要知道Java会确保一个字符串常量只有一个拷贝。 因为例子中的s0和s1中的”kvill”都是字符串常量,它们在编译期就被确定了,所以s0==s1为true;而”kv”和”ill”也都是字符串常量,当一个字符串由多个字符串常量连接而成时,它自己肯定也是字符串常量,所以s2也同样在编译期就被解析为一个字符串常量,所以s2也是常量池中”kvill”的一个引用。 所以我们得出s0==s1==s2; 用new String() 创建的字符串不是常量,不能在编译期就确定,所以new String() 创建的字符串不放入常量池中,它们有自己的地址空间。 看例2: String s0=”kvill”; String s1=ne w String(”kvill”); String s2=”kv”+ ne w String(“ill”); Syste m.out.println( s0==s1 ); Syste m.out.println( s0==s2 ); Syste m.out.println( s1==s2 );

sql取出字符串中的汉字-字母或是数字

go --创建函数(得到字符串中的汉字) create function [dbo].[m_getchinese] ( @chinese nvarchar(max) ) returns varchar(100) as begin while patindex('%[^吖-咗]%',@chinese)> 0 begin set @chinese =stuff(@chinese,patindex('%[^吖- 咗]%',@chinese),1,N''); end return @chinese end go --创建函数(得到字符串中的字母) create function [dbo].[m_getstr](@maco varchar(100)) returns varchar(max) as begin while patindex('%[^a-z]%',@maco)> 0 begin set @maco=stuff(@maco,patindex('%[^a-z]%',@maco),1,'') end return @maco end go --创建函数(得到字符串中的数字) create function [dbo].[m_getnumber] ( @mysql_one nvarchar(200) ) returns varchar(200) begin declare @mysql_two varchar(200) select @mysql_two=

substring(@mysql_one,patindex('%[0-9.]%',@mysql_one),patindex('%[ ^0-9.]%',substring(@mysql_one,patindex('%[0-9.]%',@mysql_one), len(@mysql_one)-patindex('%[0-9.]%',@mysql_one)+1))-1) return @mysql_two; end --测试 select dbo.[m_getchinese]('China2009中国HRB4-1v') select dbo.[m_getstr]('China2009中国HRB4-1v') select dbo.[m_getnumber]('China2009中国HRB4-1v') --运行结果 /* ----------- 中国 ----------- ChinaHRBv ----------- 2009 */ --说明一下 --上面这个取数字是可以取浮点型的 select dbo.[m_getnumber] ('字段.456A(AA)A')--正常 select dbo.[m_getnumber] ('CHinese2.1day')--正常 select dbo.[m_getnumber] ('Name5.01From')--正常 select dbo.[m_getnumber] ('9898Address')--正常 select dbo.[m_getnumber] ('aaaaaForm2.3333')--错误 --修正函数 go /* 取出字符串中间的数字(第二版)*/ create function [dbo].[m_getnumberV2.0] ( @mysql_one nvarchar(200) ) returns varchar(200) begin declare @mysql_two varchar(200)

相关文档
相关文档 最新文档