java - Java中如何分割字符串?

标签 java string split

我想通过分隔符“-”将字符串“004-034556”拆分为两个字符串:

part1 = "004";
part2 = "034556";

这意味着第一个字符串将包含 '-' 之前的字符,第二个字符串将包含 '-' 之后的字符。

我还想检查字符串中是否有 '-'

最佳答案

使用适当命名的方法 String#split() .

String string = "004-034556";
String[] parts = string.split("-");
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556

请注意split的参数假定为 regular expression ,所以记得逃跑special characters如果需要的话。

there are 12 characters with special meanings: the backslash \, the caret ^, the dollar sign $, the period or dot ., the vertical bar or pipe symbol |, the question mark ?, the asterisk or star *, the plus sign +, the opening parenthesis (, the closing parenthesis ), and the opening square bracket [, the opening curly brace {, These special characters are often called "metacharacters".

例如,按句点/点分割 . (在正则表达式中表示“any character ”),使用 backslash \ 像这样转义单个特殊字符 split("\\.") ,或使用character class [] 像这样表示文字字符 split("[.]") ,或使用 Pattern#quote() 像这样转义整个字符串 split(Pattern.quote(".")) .

String[] parts = string.split(Pattern.quote(".")); // Split on the exact string.

要预先测试字符串是否包含某些字符,只需使用 String#contains() .

if (string.contains("-")) {
    // Split it.
} else {
    throw new IllegalArgumentException("String " + string + " does not contain -");
}

请注意,这不需要正则表达式。为此,请使用 String#matches() 相反。

如果您想在结果部分中保留分割字符,请使用 positive lookaround 。如果您想让分割字符最终出现在左侧,请通过添加前缀 ?<= 来使用正向后查找。对模式进行分组。

String string = "004-034556";
String[] parts = string.split("(?<=-)");
String part1 = parts[0]; // 004-
String part2 = parts[1]; // 034556

如果您希望分割字符出现在右侧,请通过添加前缀 ?= 使用正向前瞻。对模式进行分组。

String string = "004-034556";
String[] parts = string.split("(?=-)");
String part1 = parts[0]; // 004
String part2 = parts[1]; // -034556

如果您想限制结果部分的数量,那么您可以提供所需的数量作为 split() 的第二个参数方法。

String string = "004-034556-42";
String[] parts = string.split("-", 2);
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556-42

关于java - Java中如何分割字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60063606/

相关文章:

java - JSF 无法从 h :dataTable 中的支持 bean 解析转换器 ID

java - Android 二维 ArrayList 填充后为空

android - 用于获取子字符串的开始和结束索引的 Kotlin 函数

正则表达式上的 Java 拆分

Java Math.random 闭双区间

java - 在许多 GetHashCode 实现中,为什么在 xoring 之前乘以质数?

java - SharedPreferences 类型中的方法 getLong(String, long) 不适用于参数 (String)

java - 如果我有太多空行,则单词显示的问题

ruby - 奇怪的行为破坏了字符串的某些部分,但只有特定的字符,Atom,RSpec

java - 从扫描仪读取并跳过空格