`
z75148885
  • 浏览: 191587 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

面试常见问题1: 字符串分割

阅读更多

下午面试两个同志, 感觉现在的同志们是 Spring, Hibernate 很熟悉, 但是 J2SE 反而陌生了.

可以用两个方法来分割字符串为数组.

1. java.lang.String 的 split() 方法, JDK 1.4 or later

 

split
public String[] split(String regex,

                      int limit)
根据匹配给定的正则表达式来拆分此字符串。

此方法返回的数组包含此字符串的每个子字符串,这些子字符串由另一个匹配给定的表达式的子字符串终止或由字符串结束来终止。数组中的子字符串按它们在此字符串中的顺序排列。如果表达式不匹配输入的任何部分,则结果数组只具有一个元素,即此字符串。

limit 参数控制模式应用的次数,因此影响结果数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后项将包含超出最后匹配的定界符的所有输入。如果 n 为非正,则模式将被应用尽可能多的次数,而且数组可以是任意长度。如果 n 为零,则模式将被应用尽可能多的次数,数组可有任何长度,并且结尾空字符串将被丢弃。

例如,字符串 "boo:and:foo" 使用这些参数可生成下列结果:

Regex
Limit
结果

:
2
{ "boo", "and:foo" }

:
5
{ "boo", "and", "foo" }

:
-2
{ "boo", "and", "foo" }

o
5
{ "b", "", ":and:f", "", "" }

o
-2
{ "b", "", ":and:f", "", "" }

o
0
{ "b", "", ":and:f" }

这种形式的方法调用 str.split(regex, n) 产生与以下表达式完全相同的结果:

Pattern.compile(regex).split(str, n)
参数:
regex - 定界正则表达式
limit - 结果阈值,如上所述
返回:
字符串数组,根据给定正则表达式的匹配来拆分此字符串,从而生成此数组
抛出:
PatternSyntaxException - 如果正则表达式的语法无效
从以下版本开始:
1.4
另请参见:
Pattern

split
public String[] split(String regex)
根据给定的正则表达式的匹配来拆分此字符串。

该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,结果数组中不包括结尾空字符串。

例如,字符串 "boo:and:foo" 产生带有下面这些表达式的结果:

Regex
结果

:
{ "boo", "and", "foo" }

o
{ "b", "", ":and:f" }

参数:
regex - 定界正则表达式
返回:
字符串数组,根据给定正则表达式的匹配来拆分此字符串,从而生成此数组。
抛出:
PatternSyntaxException - 如果正则表达式的语法无效
从以下版本开始:
1.4
另请参见:
Pattern

2. java.util.Tokenizer JDK 1.0 or later

 

 

string tokenizer 类允许应用程序将字符串分解为标记。tokenization 方法比 StreamTokenizer 类所使用的方法更简单。StringTokenizer 方法不区分标识符、数和带引号的字符串,它们也不识别并跳过注释。

可以在创建时指定,也可以根据每个标记来指定分隔符(分隔标记的字符)集合。

StringTokenizer 的实例有两种行为方式,这取决于它在创建时使用的 returnDelims 标志的值是 true 还是 false

  • 如果标志为 false,则分隔符字符用来分隔标记。标记是连续字符(不是分隔符)的最大序列。
  • 如果标志为 true,则认为那些分隔符字符本身即为标记。因此标记要么是一个分隔符字符,要么是那些连续字符(不是分隔符)的最大序列。

StringTokenizer 对象在内部维护字符串中要被标记的当前位置。某些操作将此当前位置移至已处理的字符后。

通过截取字符串的一个子串来返回标记,该字符串用于创建 StringTokenizer 对象。

下面是一个使用 tokenizer 的实例。代码如下:

     StringTokenizer st = new StringTokenizer("this is a test");

     while (st.hasMoreTokens()) {

         System.out.println(st.nextToken());

     }

 

输出以下字符串:

     this

     is

     a

     test
StringTokenizer 是出于兼容性的原因而被保留的遗留类(虽然在新代码中并不鼓励使用它)。建议所有寻求此功能的人使用 Stringsplit 方法或 java.util.regex 包。 

下面的示例阐明了如何使用 String.split 方法将字符串分解为基本标记:

     String[] result = "this is a test".split("\\s");

     for (int x=0; x<result.length; x++)

         System.out.println(result[x]);

 

输出以下字符串:

     this

     is

     a

     test

 
从以下版本开始:
JDK1.0
另请参见:
StreamTokenizer


BeanSoft 2007-03-08 18:44 发表评论
分享到:
评论

相关推荐

    C语言基础面试题(03-字符串函数).docx

    C语言中的字符串处理是编程面试中的常见主题,尤其是在嵌入式系统或底层开发相关的面试中。下面我们将深入探讨一些基于`string.h`库的常用字符串函数,并提供一些问题的解决方案。 1. **字符串函数** - `strlen`: ...

    C#字符串操作

    7. `Split(char/str[])`:将字符串分割成多个子字符串数组,基于提供的分隔符。 8. `Concat(string[], string, ...)`:将多个字符串连接成一个新字符串。 9. `Join(string[], separator)`:使用指定的分隔符将字符串...

    什么是字符串逆序以及学习字符串逆序的意义是什么

    - 例如,通过理解如何逆序字符串,可以进一步探索字符串的分割、合并等更复杂的操作。 5. **提高代码质量和效率**: - 高效地实现字符串逆序不仅可以减少程序运行时间,还能使代码更加简洁明了。 - 这对于提高...

    面试UC浏览器的一道处理字符串的题目(已提供答案)

    标题中的“面试UC浏览器的一道处理字符串的题目”暗示了这是一个与编程相关的面试问题,特别是涉及到字符串处理。在Java编程语言中,字符串处理是基础且重要的技能,常常出现在面试题中,用来评估候选人的编程能力和...

    字符串排序

    在计算机科学中,字符串排序是数据处理、文本分析等场景中常见的需求。 #### 二、Java字符串排序方法 在Java中,可以通过多种方式实现字符串排序,包括但不限于使用内置的`Collections.sort()`方法(适用于可变...

    python-leetcode面试题解之第151题反转字符串中的单词-题解.zip

    首先,我们可以使用split()函数将字符串分割成单词列表,然后对这个列表进行反转,最后再用join()函数将单词重新组合成字符串。 以下是实现这个功能的Python代码: ```python def reverseWords(s): # 将字符串s按...

    华为-华为od题库练习题之字符串分隔.zip

    这个压缩包可能包含了多个练习题目,旨在帮助学习者提升在编程中处理字符串的能力,特别是涉及到字符串分割的技巧。 【描述】"华为_华为od题库练习题之字符串分隔" 这个描述进一步确认了主题,即这些练习题的核心是...

    JAVA 面试题:常见17道面试题总结

    - `split()`:分割字符串,返回一个分割后的字符串数组。 - `getBytes()`:返回字符串的 byte 类型数组。 - `length()`:返回字符串长度。 - `toLowerCase()`:将字符串转成小写字母。 - `toUpperCase()`:将字符串...

    字符串按单词反转算法

    在编程领域,字符串操作是必不可少的一部分,特别是在面试中,它经常作为考察候选人基本功和问题解决能力的一个重要方面。题目中提到的“字符串按单词反转算法”是指将一个字符串中的每个单词顺序反转,但保留单词...

    字符串处理文档

    `split()`方法根据提供的分隔符将字符串分割成多个子字符串,返回一个字符串数组。 7. **大小写转换** `toLowerCase()`和`toUpperCase()`分别将字符串转换为全小写和全大写。 8. **trim()** `trim()`方法去除...

    华为面试上机题(一)(10题)

    - 字符串转数组:使用字符串的split方法将字符串分割为字符串数组。 - 字符数组转字符串:使用String的构造函数或Arrays类的toString方法。 9. 自定义算法逻辑 - 判断字符串中的字符是否唯一:不使用额外存储...

    Java精确截取字符串.doc

    面试中可能会遇到类似的问题,要求编写一个函数来截取字符串,确保汉字不被截半。以下是一个简单的示例实现: ```java public class SplitString { private String str; private int byteNum; public ...

    常见的Java上机面试题

    **面试题1:怎样截取字符串** **题目描述**:设计一个函数,接受一个字符串和一个整数作为参数,返回一个按照指定字节数截取的字符串,但需确保不会截断汉字(每个汉字占两个字节)。例如,对于输入"我ABC"和数字4...

    Java经典面试题总结&面试问题大全及答案大全

    ### Java经典面试题详解 #### 1.... - `split(String regex)`: 根据正则表达式分割字符串。 以上知识点涵盖了Java面试中常见的几个方面,帮助准备面试的开发者们更好地理解和掌握Java基础知识。

    常见:算法笔试或面试题1

    12. 字符串分割:构建一个长度为 128 的布尔数组,将 token 中的分隔符对应的数组元素设为 true,然后扫描 src,遇到数组值为 true 的位置就进行分割。 13. 查找数组 B 中的数 x:数组从 m 处分开后,可以分别对两...

    华为OD资源:华为od题目库(字符个数统计、坐标移动、单词倒排等)

    这涉及到了字符串分割、链表或数组的使用、排序以及索引构建。对于复杂度的优化和内存管理也是此类问题的关键。 在华为OD资源中,这些题目可能有多种变体和难度等级,旨在测试候选人在不同层面的技能。通过解决这些...

    面试知识点总结--java笔试算法题及答案.pdf

    在 Java 中,字符串分割算法是非常常见的面试题之一。本文中提供了一个使用 StringTokenizer 类实现字符串分割的示例代码,然而,该方法已不再被推荐使用,取而代之的是使用 String 类的 split 方法,该方法更简洁、...

    面试宝典新版.docx

    - split():根据分隔符分割字符串,返回结果数组。 - getBytes():将字符串转化为字节数组。 - length():返回字符串长度。 - toLowerCase():将字符串转为小写。 - toUpperCase():将字符串转为大写。 - ...

Global site tag (gtag.js) - Google Analytics