`

Java_字符操作判断

    博客分类:
  • Util
阅读更多
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("\"", "&quot;", replace("<", "&lt;", str));
  }

  /**
   * 替换字符串,将被编码的转换成原始码(替换成双引号和小于号)
   * 
   * @param str String
   * @return String
   */
  public static String htmldecode(String str) {
    if (str == null) {
      return null;
    }

    return replace("&quot;", "\"", replace("&lt;", "<", 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("<", "&lt;", str);
    str = replace(" ", "&nbsp;", str);
    str = replace("\r\n", _BR, str);
    str = replace("\n", _BR, str);
    str = replace("\t", "&nbsp;&nbsp;&nbsp;&nbsp;", 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));
    }
  }
}



分享到:
评论

相关推荐

    chapter4_java_字符_正则表达式_

    Java还提供了`Character`类,提供了一系列方法来处理字符,如判断是否为字母、数字等。 正则表达式(Regular Expression)是一种模式匹配工具,可以用来检查一个字符串是否符合某种模式。在Java中,我们主要使用`...

    java 字符串中文判断

    在Java编程语言中,处理字符串是非常常见的操作,尤其是在涉及到文本分析和处理的场景。本文将深入探讨如何在Java中进行中文字符的判断和计数,这主要基于Java的Unicode编码特性以及字符集的理解。 首先,我们需要...

    JAVA 字符串 操作

    在Java编程语言中,字符串...以上只是Java字符串操作的一小部分,实际开发中还有许多其他方法和特性,如国际化(I18N)、正则表达式等,都需要程序员灵活掌握。理解并熟练运用这些操作,能有效提高代码质量和效率。

    Java检索字符串中是否存在某字符

    在实际编程中,Java的`String`类提供了多种字符串操作方法,如`indexOf()`用于查找子串第一次出现的位置,以及`lastIndexOf()`用于查找最后一次出现的位置。然而,对于大量数据的高效处理,自定义的算法如KMP则更为...

    java 判断中英文

    在Java编程语言中,判断一个字符串是否包含中文字符或英文字符是常见的需求,这主要涉及到字符编码和字符串处理的知识。本文将深入探讨如何利用Java进行这样的判断。 首先,我们需要了解字符编码的基础。在计算机中...

    java基础-给出一个随机字符串,判断有多少字母?多少数字?

    Java是一种广泛应用于软件开发的编程语言,而字符串处理是Java开发中的一项基本操作。在实际开发中,我们经常需要对字符串进行处理和判断,例如判断字符串中有多少字母、多少数字等。这篇文章将为大家详细介绍如何...

    java_1.7_api_cn.chm

    4. **Strings in switch**:在Java 7中,`switch`语句可以接受字符串(`String`)作为参数,这对于基于字符串的条件判断提供了便利。 5. **钻石操作符**:在创建匿名内部类或使用泛型时,可以省略类型参数的实例化...

    java 字符串操作类

    在Java编程语言中,字符串操作是日常开发中的重要部分,因为字符串处理无处不在,从数据解析到用户界面的交互。`StringUtil` 类是这样一个工具类,它集合了多种常用的字符串处理方法,以提高开发效率并减少代码重复...

    JAVA_API_1.7中文(最新、最全).chm

    此外,`String`类还增加了`isEmpty()`方法,用于快速检查字符串是否为空,以及`contains(CharSequence)`方法,用于判断字符串是否包含指定的字符序列。 在类型推断方面,Java 7引入了钻石操作符`&lt;&gt;`,简化了泛型...

    去除重复字符工具_字符_

    哈希表可以快速判断一个字符是否已经出现过,如果出现过则忽略,否则添加到结果中。此外,还可以利用双指针技术,一个指针扫描原始字符串,另一个指针记录新字符串,遇到未出现过的字符时添加到新字符串。这些方法都...

    java 创建字符串类

    在Java编程语言中,字符串是极其重要且常用的数据类型,用于表示和操作文本。Java提供了两种主要的方式来创建字符串:通过`String`类的构造方法和使用`StringBuilder`或`StringBuffer`类。以下是对这些知识点的详细...

    day13_Character_java_

    在"day13_Character_java_"这个主题中,我们主要探讨的是Java在字符处理方面的知识,这包括但不限于字符串操作、字符编码以及面向对象编程的应用。 首先,Java中的字符是通过Unicode编码表示的,这意味着Java可以...

    javakcsj_src_java_

    此外,可能会涉及到字符串操作、数组的使用,以及如何进行条件判断和循环控制。这些基本概念和技能是每个Java程序员必备的。 在学习过程中,结合书本理论与"javakcsj_src_java_"提供的源码,可以形成理论与实践的...

    Java实现字符串的匹配.doc

    接着遍历短字符串,判断乘积能否被短字符串中的字符对应的素数整除。如果整个过程中没有余数,那么短字符串就是长字符串的子集。 Java 代码实现 下面是使用 Java 实现字符串匹配的代码示例: ```java public class...

    Java_demo_java的小案例_

    3. 处理读取的数据,可能涉及字符串操作、条件判断等。 4. 使用`PrintStream`或`PrintWriter`将结果输出到控制台或写入另一个文件。 5. 在操作完成后,确保所有打开的流都被正确关闭,防止资源泄漏。 在实际编程中...

    java 字符串 正则表达式 详细实例代码

    通过运行和调试这些代码,你可以加深对Java字符串、正则表达式以及日期时间格式化的理解。 总之,理解和熟练掌握Java中的字符串操作、正则表达式以及日期时间格式化对于任何Java开发者来说都是必不可少的技能。通过...

    java模拟顺序栈实现回文串的判断

    本主题将探讨如何使用Java语言通过模拟顺序栈来判断一个字符串是否为回文串。这个方法对于初学者来说是很好的实践,因为它涉及到基础的数据结构——栈,以及字符串处理技巧。 首先,我们需要理解栈(Stack)这种...

    NameCardRec_java_安卓名片_

    字符分割则是将图像中的每个字符单独分离出来,最后通过训练好的识别模型来判断每个字符的具体内容。 在Android平台上,可能使用的OCR库有Tesseract、Google Mobile Vision API等。这些库提供了丰富的API接口,...

    Hello World_java_world_

    这个例子中的"Hello World_java_world_"可能是一个修正了错误的程序,它涉及到两个数字的加法操作。之前的版本可能存在逻辑错误,这让我们有机会探讨如何正确地在Java中进行基本的数学运算。 首先,让我们回顾一下...

    java 解析Excel 并判断解析的数据类型__Eclipse工程

    本项目名为"java 解析Excel 并判断解析的数据类型__Eclipse工程",显然是一个使用Java语言在Eclipse环境下实现的程序,其主要功能是读取Excel文件并识别其中各单元格的数据类型。 首先,我们需要了解Java中用于解析...

Global site tag (gtag.js) - Google Analytics