import java.util.*;
import java.util.regex.Pattern;
public class StrTools {
/**
* 分割字符串
*
* @param str String 原始字符串
* @param splitsign String 分隔符
* @return String[] 分割后的字符串数组
*/
@SuppressWarnings("unchecked")
public static String[] split(String str, String splitsign) {
int index;
if (str == null || splitsign == null)
return null;
ArrayList al = new ArrayList();
while ((index = str.indexOf(splitsign)) != -1) {
al.add(str.substring(0, index));
str = str.substring(index + splitsign.length());
}
al.add(str);
return (String[]) al.toArray(new String[0]);
}
/**
* 替换字符串
*
* @param from String 原始字符串
* @param to String 目标字符串
* @param source String 母字符串
* @return String 替换后的字符串
*/
public static String replace(String from, String to, String source) {
if (source == null || from == null || to == null)
return null;
StringBuffer bf = new StringBuffer("");
int index = -1;
while ((index = source.indexOf(from)) != -1) {
bf.append(source.substring(0, index) + to);
source = source.substring(index + from.length());
index = source.indexOf(from);
}
bf.append(source);
return bf.toString();
}
/**
* 替换字符串,能能够在HTML页面上直接显示(替换双引号和小于号)
*
* @param str String 原始字符串
* @return String 替换后的字符串
*/
public static String htmlencode(String str) {
if (str == null) {
return null;
}
return replace("\"", """, replace("<", "<", str));
}
/**
* 替换字符串,将被编码的转换成原始码(替换成双引号和小于号)
*
* @param str String
* @return String
*/
public static String htmldecode(String str) {
if (str == null) {
return null;
}
return replace(""", "\"", replace("<", "<", str));
}
private static final String _BR = "<br/>";
/**
* 在页面上直接显示文本内容,替换小于号,空格,回车,TAB
*
* @param str String 原始字符串
* @return String 替换后的字符串
*/
public static String htmlshow(String str) {
if (str == null) {
return null;
}
str = replace("<", "<", str);
str = replace(" ", " ", str);
str = replace("\r\n", _BR, str);
str = replace("\n", _BR, str);
str = replace("\t", " ", str);
return str;
}
/**
* 返回指定字节长度的字符串
*
* @param str String 字符串
* @param length int 指定长度
* @return String 返回的字符串
*/
public static String toLength(String str, int length) {
if (str == null) {
return null;
}
if (length <= 0) {
return "";
}
try {
if (str.getBytes("GBK").length <= length) {
return str;
}
} catch (Exception ex) {
}
StringBuffer buff = new StringBuffer();
int index = 0;
char c;
length -= 3;
while (length > 0) {
c = str.charAt(index);
if (c < 128) {
length--;
} else {
length--;
length--;
}
buff.append(c);
index++;
}
buff.append("...");
return buff.toString();
}
/**
* 判断是否为整数
*
* @param str 传入的字符串
* @return 是整数返回true,否则返回false
*/
public static boolean isInteger(String str) {
Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
return pattern.matcher(str).matches();
}
/**
* 判断是否为浮点数,包括double和float
*
* @param str 传入的字符串
* @return 是浮点数返回true,否则返回false
*/
public static boolean isDouble(String str) {
Pattern pattern = Pattern.compile("^[-\\+]?[.\\d]*$");
return pattern.matcher(str).matches();
}
/**
* 判断输入的字符串是否符合Email样式.
*
* @param str 传入的字符串
* @return 是Email样式返回true,否则返回false
*/
public static boolean isEmail(String str) {
Pattern pattern = Pattern.compile("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$");
return pattern.matcher(str).matches();
}
/**
* 判断输入的字符串是否为纯汉字
*
* @param str 传入的字符窜
* @return 如果是纯汉字返回true,否则返回false
*/
public static boolean isChinese(String str) {
Pattern pattern = Pattern.compile("[\u0391-\uFFE5]+$");
return pattern.matcher(str).matches();
}
/**
* 是否为空白,包括null和""
*
* @param str
* @return
*/
public static boolean isBlank(String str) {
return str == null || str.trim().length() == 0;
}
/**
* 判断是否为质数
*
* @param x
* @return
*/
public static boolean isPrime(int x) {
if (x <= 7) {
if (x == 2 || x == 3 || x == 5 || x == 7)
return true;
}
int c = 7;
if (x % 2 == 0)
return false;
if (x % 3 == 0)
return false;
if (x % 5 == 0)
return false;
int end = (int) Math.sqrt(x);
while (c <= end) {
if (x % c == 0) {
return false;
}
c += 4;
if (x % c == 0) {
return false;
}
c += 2;
if (x % c == 0) {
return false;
}
c += 4;
if (x % c == 0) {
return false;
}
c += 2;
if (x % c == 0) {
return false;
}
c += 4;
if (x % c == 0) {
return false;
}
c += 6;
if (x % c == 0) {
return false;
}
c += 2;
if (x % c == 0) {
return false;
}
c += 6;
}
return true;
}
public static void main(String[] args) {
String[] numbers = { "12345", "-12345", "123.45", "-123.45", ".12345", "-.12345", "a12345", "12345a", "123.a45" };
for (String str : numbers) {
System.out.println(str + "=" + isInteger(str) + " " + isDouble(str));
}
String[] emails = { "1@2.com", "1.2@3.com", "1@3.4.5.com" };
for (String str : emails) {
System.out.println(str + "=" + isEmail(str));
}
String[] chineses = { "中国", "1中国", "中国1", "1中国2", "中1国" };
for (String str : chineses) {
System.out.println(str + "=" + isChinese(str));
}
}
}
分享到:
相关推荐
Java还提供了`Character`类,提供了一系列方法来处理字符,如判断是否为字母、数字等。 正则表达式(Regular Expression)是一种模式匹配工具,可以用来检查一个字符串是否符合某种模式。在Java中,我们主要使用`...
在Java编程语言中,处理字符串是非常常见的操作,尤其是在涉及到文本分析和处理的场景。本文将深入探讨如何在Java中进行中文字符的判断和计数,这主要基于Java的Unicode编码特性以及字符集的理解。 首先,我们需要...
在Java编程语言中,字符串是极其重要的数据类型,用于存储和操作文本信息。字符串的长度判断和截取是常见的操作,对于程序逻辑控制和数据处理至关重要。以下将详细讲解如何在Java中进行字符串长度的判断以及如何截取...
在Java编程语言中,字符串...以上只是Java字符串操作的一小部分,实际开发中还有许多其他方法和特性,如国际化(I18N)、正则表达式等,都需要程序员灵活掌握。理解并熟练运用这些操作,能有效提高代码质量和效率。
在实际编程中,Java的`String`类提供了多种字符串操作方法,如`indexOf()`用于查找子串第一次出现的位置,以及`lastIndexOf()`用于查找最后一次出现的位置。然而,对于大量数据的高效处理,自定义的算法如KMP则更为...
在Java编程语言中,判断一个字符串是否包含中文字符或英文字符是常见的需求,这主要涉及到字符编码和字符串处理的知识。本文将深入探讨如何利用Java进行这样的判断。 首先,我们需要了解字符编码的基础。在计算机中...
### Java判断字符串是否包含汉字的方法 在开发过程中,有时我们需要判断一个字符串是否包含汉字,并根据判断的结果执行不同的逻辑。这通常出现在需要处理多语言输入的情况下,例如用户输入验证、文本分析等场景。...
Java是一种广泛应用于软件开发的编程语言,而字符串处理是Java开发中的一项基本操作。在实际开发中,我们经常需要对字符串进行处理和判断,例如判断字符串中有多少字母、多少数字等。这篇文章将为大家详细介绍如何...
这个过程常用于判断字符串是否包含特定子串、替换子串、分割字符串等任务。 "char_comp"可能是一个自定义的函数或方法,用于执行这个大小写不敏感的字符串比较。在大多数编程语言中,如Python、Java、C++,都有内置...
### Java正则表达式判断字符串是否包含中文 在日常的软件开发过程中,我们经常会遇到需要对输入的字符串进行校验的情况。例如,在处理用户输入、文本分析或数据清洗时,可能需要判断一个字符串中是否包含中文字符。...
在Java编程语言中,文件操作是一项基础且至关重要的任务,特别是在构建数据访问对象(DAO)层时。DAO模式被广泛应用于解耦业务逻辑与数据存储,使得代码更加可维护和可扩展。`FileDao`就是一个典型的例子,它专门...
4. **Strings in switch**:在Java 7中,`switch`语句可以接受字符串(`String`)作为参数,这对于基于字符串的条件判断提供了便利。 5. **钻石操作符**:在创建匿名内部类或使用泛型时,可以省略类型参数的实例化...
### Java中字符串的操作汇总 在Java编程语言中,字符串(`String`)是极其重要的一个概念,被广泛应用于各种场景之中。为了更好地理解和运用Java语言,掌握字符串的各种操作方法至关重要。下面将详细介绍Java中字符...
字符分割是将定位出的车牌区域分解成单个字符,这一步可能涉及到图像裁剪和形态学操作。字符识别则是最后一步,常见的方法有模板匹配、深度学习模型(如卷积神经网络CNN)等。如果项目中使用了深度学习,那么可能...
### Java字符串操作大全 本文将详细介绍Java中字符串的各种操作方法,包括基本的字符串处理功能以及更高级的操作技巧。这些知识点对于Java初学者来说至关重要,并且能够帮助开发者更好地理解和运用Java中的字符串类...
在Java编程语言中,字符串操作是日常开发中的重要部分,因为字符串处理无处不在,从数据解析到用户界面的交互。`StringUtil` 类是这样一个工具类,它集合了多种常用的字符串处理方法,以提高开发效率并减少代码重复...
此外,`String`类还增加了`isEmpty()`方法,用于快速检查字符串是否为空,以及`contains(CharSequence)`方法,用于判断字符串是否包含指定的字符序列。 在类型推断方面,Java 7引入了钻石操作符`<>`,简化了泛型...
1. **词法规则**:Java的词法规则定义了源代码中合法的字符序列。例如,标识符由字母、数字或下划线组成,且不能以数字开头;关键字如`public`、`private`等有特定含义;常量可以是整数、浮点数或者字符串,而运算符...
哈希表可以快速判断一个字符是否已经出现过,如果出现过则忽略,否则添加到结果中。此外,还可以利用双指针技术,一个指针扫描原始字符串,另一个指针记录新字符串,遇到未出现过的字符时添加到新字符串。这些方法都...