package interview.string;
public class SplitDemo
{
/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
String str = "ab中国d人a";
String ret = split(str, 4);
System.out.println(ret);
}
/**
* 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
* 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,
* 6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
*/
public static String split(String str, int num)
{
if (num <= 0 || num > str.length())
{
System.out.println("输入有误!");
System.exit(-1);
}
String ret = "";
byte[] buf = str.getBytes();
int temp = 0;
int englishCount = 0;
for (int i = 0; i < num; i++)
{
temp = buf[i];
// 计算在此位置(包括)以前有多少英文字符
if (!(temp < 0 || temp > 255))
{
englishCount++;
}
}
// 汉字的总共字节数
int chinaCount = (num - englishCount);
// 如果汉字的总字节数为偶数,说明,该位置是汉字的最后一个字节
if (chinaCount % 2 == 0)
{
ret = new String(buf, 0, num);
}
else
{
ret = new String(buf, 0, num - 1);
}
return ret;
}
}
分享到:
相关推荐
- **问题5**: `strtok`用于分割字符串,`sprintf`用于格式化输出,`getline`用于读取行。 - **问题6**: 逆序字符串,可以从后向前复制字符。 - **问题7**: 字符串转整数,可以使用`sscanf`或手动解析。 - **问题...
- `split()`:分割字符串,返回一个分割后的字符串数组。 - `getBytes()`:返回字符串的 byte 类型数组。 - `length()`:返回字符串长度。 - `toLowerCase()`:将字符串转成小写字母。 - `toUpperCase()`:将字符串...
7. 字符串操作:了解strtok()函数分割字符串,以及其它如strpbrk(), strspn(), strcspn()等字符串处理函数的使用。 8. 字符数组与字符串的关系:理解如何在字符数组中操作字符串,包括动态分配内存和释放内存。 在...
- **正则表达式**:`preg_split()`用于正则表达式分割字符串,`ereg()`已废弃,不应再使用。 - **变量和类型转换**: - `isset()`和`empty()`用于检查变量状态。 - 强类型比较`===`与弱类型比较`==`的区别。 - ...
Java 面试题大全 2023 版 ...split():分割字符串,返回一个分割后的字符串数组。getBytes():返回字符串的 byte 类型数组。 本文档只是Java 面试题大全 2023 版的一部分,更多的问题和答案将在后续文章中继续更新。
### Java经典面试题详解 #### 1.... - `split(String regex)`: 根据正则表达式分割字符串。 以上知识点涵盖了Java面试中常见的几个方面,帮助准备面试的开发者们更好地理解和掌握Java基础知识。
**代码实现**:参考给出的代码示例,可以看到采用了Java的`Scanner`类读取用户输入,`String`类的`substring`方法分割字符串,以及正则表达式来判断字符类型。通过一个循环遍历字符串中的每个字符,根据字符类型更新...
Java正则表达式是编程语言Java中用于处理字符串的强大工具,它允许开发人员根据预定义的模式进行查找、替换和分割操作。以下是一系列关于Java正则表达式的面试题及其详细解析,帮助你深入理解这一关键技能。 1. **...
- `split()`: 分割字符串成数组。 - `indexOf()`: 查找字符或子字符串的位置。 - `replace()`: 替换指定字符或子字符串。 - `substring()`: 截取字符串的一部分。 - `equals()`: 比较字符串内容是否相等。 - `...
ng new) 用新字符串替换旧字符串 split(String regex) 使用正则表达式分割字符串 trim() 去掉字符串两端的空白符 Java 面试题涵盖了诸多核心概念,包括但不限于: 1. **JDK 与 JRE**:JDK 是 Java 开发工具包,...
- 正则表达式:理解正则语法,如匹配、替换和分割字符串。 5. **文件与目录操作**: - 文件读写:fopen、fread、fwrite、fclose等函数的使用。 - 目录操作:mkdir、rmdir、scandir、chdir等函数的应用。 6. **...
答:可以使用Python的字符串split()函数来分割字符串,然后使用dict()函数将其转换为字典。 8. 请按alist中元素的age由大到小排序。 答:可以使用Python的sorted()函数来排序列表,使用lambda函数作为排序关键字。 ...
【Java初级面试题详解】 1. **集合框架的理解** - 集合(Collection)在Java中是一种用于存储对象的数据结构,具有可变长度,允许存放不同类型的对象,并提供了批量操作元素的方法。Collection接口是所有集合类的...
这个压缩包“华为od-华为od练习题之字符串分割.zip”显然包含了与字符串处理相关的练习题目,可能是为了考察应聘者在Python编程语言中的字符串操作能力。 【描述】描述中的“华为od_华为od练习题之字符串分割.zip”...
- `split()`: 按照指定分隔符分割字符串并返回数组。 - `getBytes()`: 将字符串转换为字节数组。 - `length()`: 返回字符串的长度。 - `toLowerCase()`: 转换为小写。 - `toUpperCase()`: 转换为大写。 - `...
- `split()`: 根据分隔符分割字符串并返回数组。 - `getBytes()`: 字符串转换为字节数组。 - `length()`: 返回字符串长度。 - `toLowerCase()`: 将字符串转换为小写。 - `toUpperCase()`: 转换为大写。 - `...
【标签】"华为od 练习题" 这两个标签指出了该内容与华为OD相关,同时是练习性质的材料,意味着它们可能是为了准备华为公司的面试或者内部培训而设计的,旨在测试或提升开发者对字符串处理的实际操作能力。...
- `split()`: 根据分隔符将字符串分割成数组。 - `getBytes()`: 将字符串转换为字节数组。 - `length()`: 返回字符串的长度。 - `toLowerCase()`: 转换为小写字符串。 - `toUpperCase()`: 转换为大写字符串。 ...
Java后端开发面试题涉及到多个核心领域,包括Redis的使用场景和持久化机制、Docker与虚拟机的区别、MySQL调优、以及消息队列RabbitMQ的基础知识。下面将逐一详细解析这些知识点。 1. Redis应用场景: - a. 数据...
- 计算最后一个单词的长度:可以通过分割字符串获得单词数组,然后获取数组最后一个元素的长度。 - 十六进制数值转换为十进制:使用Java内置的Integer.parseInt方法,以16作为基数进行解析。 - 字符串拆分:可以...