JAVA验证字符串长度(包括汉字)

本文介绍了一个用于验证字符串长度是否符合指定要求的方法,该方法能够正确处理包含汉字的字符串,一个汉字被视为两个字符。
/** 
     * 功能:验证字符串长度是否符合要求,一个汉字等于两个字符
     * @param strParameter 要验证的字符串
     * @param limitLength 验证的长度
     * @return 符合长度ture 超出范围false
     */
public boolean validateStrByLength(String strParameter , int limitLength)
{
     int temp_int=0;
     byte[] b=strParameter.getBytes();
  
     for(int i=0 ; i<b.length ; i++)
     {
      if(b[i]>=0)
      {
       temp_int=temp_int+1;
      }
      else
      {
       temp_int=temp_int+2;
       i++;
      }
     }
  
     if(temp_int > limitLength)
     {
      return false;
     }
     else
     {
      return true;
     }
}
<think>根据提供的引用内容,Java中获取字符串长度的主要方法是使用String类的length()方法。这个方法返回字符串中字符的数量(Unicode代码单元数量),返回值类型为int。下面是具体说明和使用示例: ### 1. 基本用法 直接调用字符串对象的`length()`方法: ```java String str = "Hello"; int len = str.length(); // 返回5 ``` ### 2. 示例代码 根据引用[1][2][3][5]的示例: ```java // 示例1:直接输出字符串长度 System.out.println("abc".length()); // 输出3 // 示例2:通过变量获取长度 String str = "Java编程"; int length = str.length(); System.out.println(length); // 输出6(中文字符每个占1个长度单位) ``` ### 3. 注意事项 - **中文字符处理**:在Java中,每个`char`类型占2字节,但`length()`方法返回的是代码单元数量。对于基本多文种平面(BMP)字符(包括常用汉字),一个字符对应一个代码单元,因此直接返回字符个数。 - **空字符串**:空字符串`""`的长度为0。 - **与数组区别**:数组长度使用`array.length`属性(无括号),字符串长度使用`str.length()`方法(带括号)。 ### 4. 实际应用场景(引用[5]) 用于验证输入字符串长度是否符合要求: ```java Scanner input = new Scanner(System.in); String password = input.next(); if (password.length() >= 6 && password.length() <= 12) { System.out.println("密码有效"); } else { System.out.println("密码长度必须在6-12位"); } ``` ### 5. 特殊情况处理(引用[4]) 如果需要按字节长度截取(例如中文算2字节),需自定义方法: ```java public static String truncate(String s, int maxBytes) { int count = 0; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); count += (c > 255) ? 2 : 1; // 中文字符计2,英文计1 if (count > maxBytes) { return s.substring(0, i) + "..."; } } return s; } ``` > **注意**:Java 9+优化了字符串存储(Compact Strings),但`length()`的行为变[^1][^3]。 §§相关问题§§ 1. Java中`length`与`length()`有什么区别? 2. 如何处理包含Unicode扩展字符(如emoji)的字符串长度? 3. 如何按字节数获取字符串长度? 4. 为什么`"𠮷".length()`返回2而是1? 5. Java字符串长度限制是多少? </think>### Java获取字符串长度的方法详解 在Java中,获取字符串长度的标准方法是使用 **`length()`** 方法(注意有括号),该方法属于`String`类,直接返回字符串的字符数量。以下是具体说明和示例: --- #### 1. **基本用法** ```java String str = "Hello, Java!"; int length = str.length(); // 获取字符串长度 System.out.println(length); // 输出:12 ``` #### 2. **关键特性** - **返回值类型**:`int`(字符数量) - **计算规则**: - 空格、标点、数字、英文字母均计为1个长度 - 中文字符也计为1个长度(Unicode字符占1位) - **空字符串处理**:`"".length() = 0` - **与数组长度的区别**: - 数组用`arr.length`(属性,无括号) - 字符串用`str.length()`(方法,需括号) #### 3. **实际应用示例** **场景1:输入字符串并输出长度**(参考引用[2]) ```java import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String input = sc.nextLine(); // 读取用户输入 System.out.println(input.length()); // 直接输出长度 } } ``` > 输入 `"编程之家"` → 输出 `4`[^2]。 **场景2:密码长度验证**(参考引用[5]) ```java String password = "Admin123"; int len = password.length(); if (len >= 6 && len <= 12) { System.out.println("密码长度有效"); } else { System.out.println("密码需6-12位"); } ``` > 输出:`密码长度有效`[^5]。 #### 4. **特殊需求处理** **按字节截取字符串**(如中文占2字节,参考引用[4]) ```java public static String left(String s, int maxBytes) { int byteCount = 0; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); byteCount += (c > 255) ? 2 : 1; // 中文+2, 英文+1 if (byteCount > maxBytes) { return s.substring(0, i) + "..."; } } return s; } ``` > 调用 `left("Java语言", 7)` 返回 `"Java语..."`[^4]。 --- #### ⚠️ 常见误区 - **错误写法**:`str.length`(缺少括号)→ 编译报错 - **空指针异常**:若字符串为`null`调用`length()`会抛出`NullPointerException`,需提前判空: ```java if (str != null) { int len = str.length(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值