您可以分割String特定的分隔字符或正则表达式,可以使用具有以下签名的方法:String.split()
public String[] split(String regex)
请注意,定界字符或正则表达式将从结果字符串数组中删除。
使用分隔字符的示例:
String lineFromCsvFile = "Mickey;Bolton;12345;121216"; String[] dataCells = lineFromCsvFile.split(";"); // Result is dataCells = { "Mickey", "Bolton", "12345", "121216"};
使用正则表达式的示例:
String lineFromInput = "What do you need from me?"; String[] words = lineFromInput.split("\\s+"); // 一个或多个空格 // Result is words = {"What", "do", "you", "need", "from", "me?"};
您甚至可以直接拆分String文字:
String[] firstNames = "Mickey, Frank, Alicia, Tom".split(", "); // Result is firstNames = {"Mickey", "Frank", "Alicia", "Tom"};
警告:不要忘记该参数始终被视为正则表达式。
"aaa.bbb".split("."); // 这将返回一个空数组
在前面的示例.中,正则表达式通配符与任何字符匹配,并且由于每个字符都是定界符,因此结果为空数组。
根据定界符(即正则表达式元字符)进行拆分
下列字符在正则表达式中被认为是特殊字符(又名元字符)
< > - = ! ( ) [ ] { } \ ^ $ | ? * + .
要基于上述定界符之一拆分字符串,您需要使用或使用来转义它们:\\Pattern.quote()
使用:Pattern.quote()
String s = "a|b|c";
String regex = Pattern.quote("|");
String[] arr = s.split(regex);
转义特殊字符:
String s = "a|b|c";
String[] arr = s.split("\\|");
拆分删除空值
split(delimiter)默认情况下,从结果数组中删除结尾的空字符串。要关闭此机制,我们需要使用split(delimiter, limit)极限值设置为负值的重载版本,例如
String[] split = data.split("\\|", -1);
split(regex)内部返回的结果split(regex, 0)。
limit参数控制应用图案的次数,因此会影响所得数组的长度。
如果限制n大于零,则将最多应用n-1次该模式,该数组的长度将不大于n,并且该数组的最后一个条目将包含除最后一个匹配的定界符之外的所有输入。
如果n为负,则该模式将被尽可能多地应用,并且数组可以具有任何长度。
如果n为零,则该模式将被尽可能多地应用,该数组可以具有任何长度,并且尾随的空字符串将被丢弃。
与分裂 StringTokenizer
除了split()方法之外,字符串还可以使用进行拆分StringTokenizer。
StringTokenizer比更具限制性,并且使用起来也有些困难。它本质上是设计用于提取由一组固定字符(以表示)分隔的令牌的。每个字符将充当分隔符。由于此限制,速度约为的两倍。String.split()StringString.split()
默认字符集为空格(\t\n\r\f)。以下示例将分别打印出每个单词。
String str = "the lazy fox jumped over the brown fence"; StringTokenizer tokenizer = new StringTokenizer(str); while (tokenizer.hasMoreTokens()) { System.out.println(tokenizer.nextToken()); }
这将打印出:
the lazy fox jumped over the brown fence
您可以使用不同的字符集进行分隔。
String str = "jumped over"; // 在这种情况下,字符“ u”和“ e”将用作分隔符 StringTokenizer tokenizer = new StringTokenizer(str, "ue"); while (tokenizer.hasMoreTokens()) { System.out.println(tokenizer.nextToken()); }
这将打印出:
j mp d ov r
问题内容: 每当出现“”时,我都尝试拆分字符串,例如语句test abc。然后,将每个单词中的第一个字母从头到尾移动。我将字母移动到使用原始字符串 所以我的问题是,我将如何分割字符串,然后开始在分割字符串的每个部分中移动字母? 问题答案: 您不必为此进行-transform-join;一步就能做到。 正则表达式基本上分为3组: 那么,作为替换字符串使它明显和清晰,切换和周围。 因此,应该清楚的是,
String 类的 split() 方法可以按指定的分割符对目标字符串进行分割,分割后的内容存放在字符串数组中。该方法主要有如下两种重载形式: 其中它们的含义如下: str 为需要分割的目标字符串。 sign 为指定的分割符,可以是任意字符串。 limit 表示分割后生成的字符串的限制个数,如果不指定,则表示不限制,直到将整个目标字符串完全分割为止。 使用分隔符注意如下: 1)“.”和“|”都是转
问题内容: 我有一个字符串如下: 我想提取数字:872226816,因此在这种情况下,我假设在第二个逗号开始读取数据之后,随后的逗号结束数据读取。 输出示例: 问题答案: 用于String.split()的 Javadoc
在java doc的 我们可以找到例子: 例如,字符串使用这些表达式产生以下结果 正则表达式 o个 第二个结果从何而来?从 和 之间,还是 和 ?
当我尝试用分隔符“|”拆分字符串时,它似乎拆分了每个字符。 这是我的线,导致了问题:
问题内容: 我有一个像这样的字符串: 我想拆分该字符串并选择作为分隔符。 我的代码如下所示: 我得到的是一个包含所有字符作为一个条目的数组: 有人知道为什么吗? 我不能用分割字符串吗? 问题答案: 在RegEx中被视为。因此,您需要对其进行转义: