`

JAVA 中一些api(字符字符串缓冲,URL类,Math类方法,正则表达式)

阅读更多
CharBuffer字符缓冲区,
StringBuffer字符串缓冲区
构造函数
1,StringBuffer() 
          构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。 
2,StringBuffer(CharSequence seq) 
          public java.lang.StringBuilder(CharSequence seq) 构造一个字符串缓冲区,它包含与指定的 CharSequence 相同的字符。其中,CharSequence 是一个接口,它的所有已知实现类: 
CharBuffer, Segment, String, StringBuffer, StringBuilder 
3,StringBuffer(int capacity) 
          构造一个不带字符,但具有指定初始容量的字符串缓冲区。 
4,StringBuffer(String str) 
          构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。


所以如果出现StringBuffer sb = new StringBuffer('a');则会选择第三个构造函数,将字符a转换为整型的97作为字符串缓冲区的初始容量。

System类
public final class System extends Object  System 类包含一些有用的类字段和方法。它不能被实例化,该类还包含一个数组复制的函数。
URL类
public final class URL extends Objectimplements Serializable类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。
package ch11exception;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

	public static void main(String[] args) {
		double a = -0.0;
		System.out.println(Math.sqrt(a)); // -0.0
		a = 0;
		System.out.println(Math.sqrt(a));// 0.0
		a = -0;
		System.out.println(Math.sqrt(a)); // 0.0

		a = -0.2;
		System.out.println(Math.sqrt(a));// NaN

		a = 0 / 0.0;
		System.out.println(a);// NaN
		a = 5 / 0.0;
		System.out.println(a);// Infinity
		a = -0.1 / 0.0;
		System.out.println(a);// -Infinity
		a = Math.sqrt(-1);
		System.out.println(a);// NaN ???

		// System.arraycopy(arg0, arg1, arg2, arg3, arg4);//字符串复制函数,在归并排序中可能用到

		System.out.println(System.getProperty("user.dir")); // 打印用户当前路径

		String patternString = "[^Jj]ava.+"; //.代表任何字符
		patternString = "\\p{Upper}";
		Pattern pattern = Pattern.compile(patternString);

		Matcher matcher = pattern.matcher("Z");
		if (matcher.matches()) {
			System.out.println("与指定的正则表达式匹配");
		}
		else{
			System.out.println("与指定的正则表达式不匹配");
		}

	}

}


正则表达式;
public final class Pattern extends Object implements Serializable正则表达式的编译表示形式。

指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象,依照正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。

因此,典型的调用顺序是


Pattern p = Pattern.compile("a*b");
 Matcher m = p.matcher("aaaaab");
 boolean b = m.matches();

在仅使用一次正则表达式时,可以方便地通过此类定义 matches 方法。此方法编译表达式并在单个调用中将输入序列与其匹配。语句
boolean b = Pattern.matches("a*b", "aaaaab");
等价于以上三个语句
字符
x 字符 x
\\ 反斜线字符
\0n 带有八进制值 0 的字符 n (0 <= n <= 7)
\0nn 带有八进制值 0 的字符 nn (0 <= n <= 7)
\0mnn 带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7)
\xhh 带有十六进制值 0x 的字符 hh
\uhhhh 带有十六进制值 0x 的字符 hhhh
\t 制表符 ('\u0009')
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')
\f 换页符 ('\u000C')
\a 报警 (bell) 符 ('\u0007')
\e 转义符 ('\u001B')
\cx 对应于 x 的控制符
 
字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
 
预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
 
POSIX 字符类(仅 US-ASCII)
\p{Lower} 小写字母字符:[a-z]
\p{Upper} 大写字母字符:[A-Z]
\p{ASCII} 所有 ASCII:[\x00-\x7F]
\p{Alpha} 字母字符:[\p{Lower}\p{Upper}]
\p{Digit} 十进制数字:[0-9]
\p{Alnum} 字母数字字符:[\p{Alpha}\p{Digit}]
\p{Punct} 标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Graph} 可见字符:[\p{Alnum}\p{Punct}]
\p{Print} 可打印字符:[\p{Graph}\x20]
\p{Blank} 空格或制表符:[ \t]
\p{Cntrl} 控制字符:[\x00-\x1F\x7F]
\p{XDigit} 十六进制数字:[0-9a-fA-F]
\p{Space} 空白字符:[ \t\n\x0B\f\r]
 
java.lang.Character 类(简单的 java 字符类型)
\p{javaLowerCase} 等效于 java.lang.Character.isLowerCase()
\p{javaUpperCase} 等效于 java.lang.Character.isUpperCase()
\p{javaWhitespace} 等效于 java.lang.Character.isWhitespace()
\p{javaMirrored} 等效于 java.lang.Character.isMirrored()
 
Unicode 块和类别的类
\p{InGreek} Greek 块(简单块)中的字符
\p{Lu} 大写字母(简单类别)
\p{Sc} 货币符号
\P{InGreek} 所有字符,Greek 块中的除外(否定)
[\p{L}&&[^\p{Lu}]]  所有字母,大写字母除外(减去)
 
边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾
 
Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
 
Reluctant 数量词
X?? X,一次或一次也没有
X*? X,零次或多次
X+? X,一次或多次
X{n}? X,恰好 n 次
X{n,}? X,至少 n 次
X{n,m}? X,至少 n 次,但是不超过 m 次
 
Possessive 数量词
X?+ X,一次或一次也没有
X*+ X,零次或多次
X++ X,一次或多次
X{n}+ X,恰好 n 次
X{n,}+ X,至少 n 次
X{n,m}+ X,至少 n 次,但是不超过 m 次
 
Logical 运算符
XY X 后跟 Y
X|Y X 或 Y
(X) X,作为捕获组
 
Back 引用
\n 任何匹配的 nth 捕获组
 
引用
\ Nothing,但是引用以下字符
\Q Nothing,但是引用所有字符,直到 \E
\E Nothing,但是结束从 \Q 开始的引用
 
特殊构造(非捕获)
(?:X) X,作为非捕获组
(?idmsux-idmsux)  Nothing,但是将匹配标志i d m s u x on - off
(?idmsux-idmsux:X)   X,作为带有给定标志 i d m s u x on - off
的非捕获组  (?=X) X,通过零宽度的正 lookahead
(?!X) X,通过零宽度的负 lookahead
(?<=X) X,通过零宽度的正 lookbehind
(?<!X) X,通过零宽度的负 lookbehind
(?>X) X,作为独立的非捕获组



package ch12io;


import java.util.*;
import java.util.regex.*;

public class RegExTest
{
   public static void main(String[] args)
   {
      Scanner in = new Scanner(System.in);
      System.out.println("Enter pattern: ");
      String patternString = in.nextLine();

      Pattern pattern = null;
      try
      {
         pattern = Pattern.compile(patternString);
      }
      catch (PatternSyntaxException e)
      {
         System.out.println("Pattern syntax error");
         System.exit(1);
      }

      while (true)
      {
         System.out.println("Enter string to match: ");
         String input = in.nextLine();        
         if (input == null || input.equals("")) return;  //程序直接结束了return
         Matcher matcher = pattern.matcher(input);
         if (matcher.matches())
         {
            System.out.println("Match");
            int g = matcher.groupCount();
            if (g > 0) //组
            {
               for (int i = 0; i < input.length(); i++)
               {
                  for (int j = 1; j <= g; j++)
                     if (i == matcher.start(j)) 
                        System.out.print('(');
                  System.out.print(input.charAt(i));
                  for (int j = 1; j <= g; j++)
                     if (i + 1 == matcher.end(j)) 
                        System.out.print(')');
               }
               System.out.println();
            }
         }
         else
            System.out.println("No match");
      }
   }
}


正则表达式示例2
package ch12io;


import java.io.*;
import java.net.*;
import java.util.regex.*;

//找到一个web网页上的超链接
public class HrefMatch
{
   public static void main(String[] args)
   {
      try
      {
         // get URL string from command line or use default
         String urlString;
         if (args.length > 0) urlString = args[0];
         else urlString = "http://www.bupt.edu.cn/";

         // open reader for URL
         InputStreamReader in = new InputStreamReader(new URL(urlString).openStream());

         // read contents into string buffer
         StringBuilder input = new StringBuilder();
         int ch;
         while ((ch = in.read()) != -1) input.append((char) ch);

         // search for all occurrences of pattern
         String patternString = "<a\\s+href\\s*=\\s*(\"[^\"]*\"|[^\\s>])\\s*>";
         Pattern pattern = Pattern.compile(patternString, Pattern.CASE_INSENSITIVE); //忽略大小写
         Matcher matcher = pattern.matcher(input);

         while (matcher.find())
         {
            int start = matcher.start();
            int end = matcher.end();
            String match = input.substring(start, end);
            System.out.println(match);
         }
      }
      catch (IOException e)
      {
         e.printStackTrace();
      }
      catch (PatternSyntaxException e)
      {
         e.printStackTrace();
      }
   }
}
分享到:
评论

相关推荐

    JAVA_API1.6文档(中文)

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类...

    Java 1.6 API 中文 New

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类。...

    java api最新7.0

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类。...

    Java常用包

    * matches()方法:判断字符串是否匹配指定正则表达式 * replace()方法:将字符串中的指定字符串替换为另一个字符串 * split()方法:将字符串分割为多个子字符串 * startsWith()方法:判断字符串是否以指定字符串开头...

    Java常用API知识测试~B卷.doc

    Java常用API知识测试主要涵盖了Java语言中的一些核心概念和常用类的使用,这些知识点对于Java开发者来说至关重要。以下是对部分测试题中涉及知识点的详细解释: 1. `StringBuffer`与`StringBuilder`的区别: - `...

    java jdk-api-1.6 中文 chmd

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类...

    JavaAPI1.6中文chm文档 part1

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类...

    JavaAPI中文chm文档 part2

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类...

    28个java常用的工具类

    1. **String类**:Java内置的String类提供了大量操作字符串的方法,如concat、substring、indexOf、replace、trim等,帮助开发者高效地处理文本。 2. **Arrays类**:这个工具类提供了排序、比较、复制和填充数组的...

    java工具类.zip

    此外,`java.util.regex`包提供了正则表达式相关的工具,用于字符串匹配和替换。 8. **数学运算**: `java.lang.Math`类提供了一系列数学运算方法,如平方根、指数、对数、随机数生成等。`java.util.Random`类则...

    java API文档

    - **java.util.regex**:正则表达式支持。 - **java.util.spi**:服务提供者接口支持。 - **java.util.zip**:ZIP压缩和解压支持。 - **javax.accessibility**:提供了无障碍支持功能,使应用程序能够与辅助技术...

    Java SE编程入门教程 java设计模式(共17页).pptx

    此外,Java还提供了丰富的内置类和API,如`Math`类用于数学运算,`String`类处理字符串,以及`Properties`类用于配置文件的读写。 位运算在处理二进制数据和高效计算时非常有用,而正则表达式则用于字符串的复杂...

    [Java参考文档].JDK_API 1.6

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类。...

    Java 程序设计教程.原书第3版.Building Java Programs.Stuart Reges

    11. **Java标准库**:书中会介绍常用的Java API,如Math类、Date和Calendar类、正则表达式等。 12. ** Swing和JavaFX**:对于GUI编程,Java提供了Swing库和新的JavaFX框架,可以创建桌面应用程序。 13. **单元测试...

    java 常用的各种工具类

    12. **Pattern/Matcher**: 这两个类用于正则表达式操作,`Pattern.compile(regex)`编译正则表达式,`Matcher`对象用于在给定字符串中匹配模式。 13. **ThreadLocal**: 为每个线程提供一个独立的变量副本,使得每个...

    Java经典问题答案(带书签)

    - 正则表达式获取字符串中ip地址:可以使用正则表达式匹配字符串中的IP地址模式。 十、高新部分: - 反射手段创建类对象:Java反射机制允许程序在运行时访问和操作类、方法、接口等。 - Invoke方法:在Java中,可以...

    java程序基础教程ppt

    13. **Java API**:介绍常用的Java内置库,如Math类、Date和Calendar类、正则表达式以及反射机制。 通过这个Java程序基础教程PPT,学习者不仅可以理解Java编程的基本概念,还能掌握编写和调试Java代码的实际技能。...

Global site tag (gtag.js) - Google Analytics