字符串,“004-034556” ,分成两个:
string1="004";
string2="034556";
这意味着第一个字符串将包含“-”之前的字符,第二个字符串将包含“-”之后的字符。 我还要检查字符串中是否有“-”。 如果不是,出现异常。怎么做?
String str="004-034556";
//检查是否含有"-"字符
if(str.contains("-")){
String arr[]=str.split("-"); //这里就将字符串004-034556分割成044,034556 取值的话for循环数组、
for(int i=0;i<arr.length;i++){
输出 arr[i]; 就是你要的
}
}else{
输出异常或者不含有"-"字符
}
String string = "004-034556";
if (string.contains("-")) {
String string1 = string.substring(0, string.indexOf("-"));
System.out.println(string1);
String string2 = string.substring(string.indexOf("-") + 1);
System.out.println(string2);
}
Just use the appropriate method: String#split().
合适的方法,有一个就够了: String#split()
String string = "004-034556";String[] parts = string.split("-");String part1 = parts[0]; // 004String part2 = parts[1]; // 034556
注意,这需要一个正则表达式,因此记得在必要时对特殊字符进行转义。
有12个具有特殊意义的字符: 反斜杠,插入符号 ^ ,美元符号 $,句号或点。 ,垂直条或管道符号 | ,问号? ,星号或星号 * ,加号 + ,开括号(,闭括号)和开方括号[ ,开括号花括号{ ,这些特殊字符通常被称为“元字符”。
所以,如果你想分开,例如 period / dot。 也就是正则表达式中的“任何字符” ,可以使用反斜杠来转义单个特殊字符,比如 so split ( .) ,或者使用字符类[]来表示文字字符,如“[ . ]”) ,或者使用 Pattern # quote ()像这样转义整个字符串split(Pattern.quote(".")) .
String[] parts = string.split(Pattern.quote(".")); // Split on period.
要预先测试字符串是否包含某些字符,用 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]; // 004String part2 = parts[1]; // -034556
如果希望限制结果部分的数量,那么可以将所需的数量作为 split ()方法的第二个参数提供。
String string = "004-034556-42";String[] parts = string.split("-", 2);String part1 = parts[0]; // 004String part2 = parts[1]; // 034556-42
直接处理字符串的另一种方法是使用带有捕获组的正则表达式。这样做的好处是可以直接对输入进行更复杂的约束。例如,下面将字符串分成两部分,并确保两部分都只包含数字:
import java.util.regex.Pattern;import java.util.regex.Matcher;
class SplitExample{
private static Pattern twopart = Pattern.compile("(\\d+)-(\\d+)");
public static void checkString(String s)
{
Matcher m = twopart.matcher(s);
if (m.matches()) {
System.out.println(s + " matches; first part is " + m.group(1) +
", second part is " + m.group(2) + ".");
} else {
System.out.println(s + " does not match.");
}
}
public static void main(String[] args) {
checkString("123-4567");
checkString("foo-bar");
checkString("123-");
checkString("-4567");
checkString("123-4567-890");
}}
由于模式在此实例中是固定的,因此可以提前编译它并将其存储为静态成员(static member)(在本例中的类加载时初始化)。正则表达式是:
(\d+)-(\d+)
圆括号表示捕获组; 匹配那部分 regexp 的字符串可以通过 Match.group ()方法访问,如下所示。 \d 匹配和个小数位,+ 表示“匹配前一个表达式的一个或多个表达式”。 - 没有啥特殊含义,所以只是匹配输入中的字符。注意,在将反斜杠编写为 Java 字符串时,需要双重转义。其他例子:
([A-Z]+)-([A-Z]+) // Each part consists of only capital letters
([^-]+)-([^-]+) // Each part consists of characters other than
-([A-Z]{2})-(\d+) // The first part is exactly two capital letters,
// the second consists of digits
String[] result = yourString.split("-");if (result.length != 2)
throw new IllegalArgumentException("String not in correct format");
这将把你的字符串分成两部分。数组中的第一个元素将是-之前包含填充的部分,数组中的第二个元素将包含-之后的字符串部分。
如果数组长度不是2,那么字符串的格式就不是:string-string。
检查 String 中的 split ()。
String[] out = string.split("-");
这样就行了。String 类有许多用于字符串操作很多。
String items[]=str.split("-");
就好了,如果没有打印出str,不会报错