java 判断含有中文的字符串的长度

本文介绍了几种实用的字符串操作方法,包括判断字符是否为字母、判断字符串是否为空以及计算字符串的显示长度等。这些方法特别适用于处理包含多种字符类型的字符串,并能够根据不同场景的需求调整字符长度的计算方式。
	public static boolean isLetter(char c) { 
        int k = 0x80; 
        return c / k == 0 ? true : false; 
    }
	
	/**
	 * 判断字符串是否为空
	 * @param str
	 * @return
	 */
	public static boolean isNull(String str){
		if(str==null||str.trim().equals("")||str.trim().equalsIgnoreCase("null")){
			return true;
		}else{
			return false;
		}
	}
	
	/** 
     * 得到一个字符串的长度,显示的长度,一个汉字或日韩文长度为2,英文字符长度为1 
     * @param String s 需要得到长度的字符串 
     * @return int 得到的字符串长度 
     */ 
    public static int length(String s) {
        if (s == null)
            return 0;
        char[] c = s.toCharArray();
        int len = 0;
        for (int i = 0; i < c.length; i++) {
            len++;
            if (!isLetter(c[i])) {
                len++;
            }
        }
        return len;
    }
	
    
    /** 
     * 得到一个字符串的长度,显示的长度,一个汉字或日韩文长度为1,英文字符长度为0.5 
     * @param String s 需要得到长度的字符串 
     * @return int 得到的字符串长度 
     */ 
    public static double getLength(String s) {
    	double valueLength = 0;  
        String chinese = "[\u4e00-\u9fa5]";  
        // 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1  
        for (int i = 0; i < s.length(); i++) {  
            // 获取一个字符  
            String temp = s.substring(i, i + 1);  
            // 判断是否为中文字符  
            if (temp.matches(chinese)) {  
                // 中文字符长度为1  
                valueLength += 1;  
            } else {  
                // 其他字符长度为0.5  
                valueLength += 0.5;  
            }  
        }  
        //进位取整  
        return  Math.ceil(valueLength);  
    }
	

<think>首先,用户的问题是:“我想使用Java检查字符串是否包含字符'b' 请问java check if string contains character 'b'”。这是一个关于Java编程的问题。 我需要根据系统级指令来构建我的回答: 1. **所有行内数学表达式必须使用$...$格式**:但这个问题是关于Java字符串的,没有数学表达式,所以可能不需要。 2. **独立公式必须使用$$...$$格式并单独成段**:同样,不适用。 3. **LaTeX语法正确**:确保任何数学部分正确,但这里可能没有。 4. **使用中文回答**:整个回答必须用中文。 5. **生成相关问题**:在回答结束时,生成一些相关问题。 6. **回答中引用的段落末尾自然地添加引用标识**:例如[^1]。用户提供了几个引用,我需要参考它们。 用户提供的引用: - 引用[1]: Java String contains() method is used to check if the string contains specified character sequence or not.[^1] - 引用[2]: How to Check if a String Contains a Substring in Bash。Checking if a string contains a substring is one of the most basic and frequently used operations in Bash scripting.[^2] - 引用[3]: 如果使用编写 new String(“xxx”) 或 String str = “xxx” 时,字符串会被放到常量池中,如果字符串长度超过64kb则会拒绝编译。那么我们知道,如果是一个UTF-8编码的字符大小为1b,那么64kb = 64 * 1024b = 65535b,也就是说,字符串常量池中放的字符串最大长度为65535。 还有一个原因是,Java 中的 UTF-8 编码的 Unicode 字符串在常量池中以 CONSTANT_Utf8_info 类型表示,结构如下: CONSTANT_Utf8_info { u1 tag; u2 length;//字符串常量池中规定,该属性的大小范围是0到2^16-1 u1 bytes[length]; } [^3] 用户说:“上述引用仅供参考,并不是用户真正的需求,请尽可能多的参考用户上一次的问题和你的回答。” 但在这个对话中,这是第一个用户消息,所以没有上一次问题。我应该基于这些引用,但专注于用户的需求。 用户的需求是:检查Java字符串是否包含字符'b'。 从引用[1],我知道Java有String.contains()方法,但contains()检查子字符串,不是单个字符。用户指定了字符'b',所以可能不是直接适用。 contains()方法检查字符序列,但字符是单个字符。所以,我可以使用indexOf()或contains()。 在Java中,检查字符串是否包含特定字符,有几种方法: - 使用indexOf(char)方法:如果indexOf('b') >= 0,则表示包含。 - 使用contains(CharSequence)方法:但CharSequence可以是字符串,所以str.contains("b"),因为"b"是一个字符串。 - 或者使用charAt()遍历字符串。 但最简洁的是indexOf()或contains()。 引用[1]提到contains()用于检查字符序列,所以str.contains("b")应该工作。 引用[3]是关于字符串常量池的,可能不直接相关,但提到字符串长度限制,这可能在处理大字符串时相关,但用户的问题很简单。 所以,在回答中,我应该: 1. 解释如何检查字符串是否包含字符'b'。 2. 提供代码示例。 3. 使用中文。 4. 在结束时生成相关问题。 5. 自然地添加引用标识。 回答结构: - 清晰介绍:解释问题。 - 提供解决方案:用代码示例。 - 解释代码。 - 添加引用。 - 结束时生成相关问题。 生成相关问题:基于这个主题,如其他方法、性能考虑、大小写敏感等。 可能的回答大纲: 1. 介绍:在Java中,检查字符串是否包含特定字符,可以使用indexOf()方法或contains()方法。 2. 代码示例:显示如何使用。 3. 解释:简要说明。 4. 引用:引用[1]提到contains(),所以可以引用它。 5. 相关问题:例如,如何检查多个字符、忽略大小写等。 用中文写。 最终回答:</think>在 Java 中,检查字符串是否包含特定字符(如 'b')是一个常见任务。最简洁的方法是使用 `indexOf()` 方法或 `contains()` 方法,它们都是 `String` 类的一部分。下面我将逐步解释如何实现,并提供代码示例。 ### 步骤 1: 理解方法选择 - **`indexOf(char)` 方法**:返回指定字符在字符串中首次出现的索引。如果字符不存在,则返回 -1。因此,如果 `str.indexOf('b') >= 0`,表示字符串包含 'b'。 - **`contains(CharSequence)` 方法**:检查字符串是否包含指定的字符序列(如子字符串)。对于单个字符 'b',可以将其转换为字符串 "b" 来使用,例如 `str.contains("b")`。但注意,`contains()` 方法内部调用 `indexOf()`,因此性能类似,但 `indexOf()` 更直接用于单个字符[^1]。 引用[1] 提到:Java String `contains()` 方法用于检查字符串是否包含指定的字符序列[^1]。对于单个字符,`indexOf()` 更高效,因为它避免了不必要的字符串转换。 ### 步骤 2: 代码实现 以下是一个完整的 Java 示例,展示如何使用 `indexOf()` 和 `contains()` 检查字符串是否包含字符 'b'。代码中还包括注释说明。 ```java public class CheckCharacterExample { public static void main(String[] args) { String str = "Hello, World!"; // 示例字符串 // 方法 1: 使用 indexOf() 检查字符 'b' if (str.indexOf('b') >= 0) { System.out.println("字符串包含字符 'b'"); } else { System.out.println("字符串不包含字符 'b'"); } // 方法 2: 使用 contains() 检查字符 'b'(转换为字符串 "b") if (str.contains("b")) { System.out.println("字符串包含字符 'b'"); } else { System.out.println("字符串不包含字符 'b'"); } } } ``` ### 解释和注意事项 - **输出结果**:如果运行上述代码,由于 "Hello, World!" 不包含 'b',程序会输出 "字符串不包含字符 'b'"。 - **大小写敏感**:Java 字符串检查是大小写敏感的。'b' 和 'B' 被视为不同字符。如果需要忽略大小写,可以先使用 `toLowerCase()` 或 `toUpperCase()` 方法转换字符串,例如 `str.toLowerCase().indexOf('b')`。 - **性能考虑**:对于短字符串,两种方法性能差异可忽略。但在处理大字符串时(如超过 64KB),引用[3] 提到字符串常量池有长度限制(最大 65535 字节),但 `indexOf()` 和 `contains()` 不受此影响,因为它们操作堆内存中的字符串对象[^3]。 - **错误处理**:如果字符串为 `null`,调用这些方法会抛出 `NullPointerException`。在真实代码中,建议添加空值检查。 ### 相关问题 为了帮助您进一步学习,以下是基于此主题的相关问题: 1. Java 中如何忽略大小写检查字符串是否包含某个字符? 2. 除了 `indexOf()` 和 `contains()`,还有其他方法检查字符串中的字符吗? 3. Java 字符串处理中,如何处理多字节字符(如 UTF-8 编码)的检查?[^3]
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值