String.split 按分号
String.split by semicolon
我想用分号(";")分割字符串:
String phrase = ";14/May/2015 FC Barcelona VS. Real Madrid";
String[] dateSplit = phrase.split(";");
System.out.println("dateSplit[0]:" + dateSplit[0]);
System.out.println("dateSplit[1]:" + dateSplit[1]);
但它删除了“;”来自字符串并将所有字符串放入 'datesplit1'
所以输出是:
dateSplit[0]:
dateSplit[1]:14/May/2015 FC Barcelona VS. Real Madrid`
并在做
System.out.println("Real String :"+phrase);
打印的字符串是
Real String :;14/May/2015 FC Barcelona VS. Real Madrid
我 rewrote
你的代码,而不是从这里处理,它工作得很好。
public static void main(String[] args) {
String phrase = "14/May/2015; FC Barcelona VS. Real Madrid";
String[] dateSplit = phrase.split(";");
System.out.println("dateSplit[0]:" + dateSplit[0]);
System.out.println("dateSplit[1]:" + dateSplit[1]);
}
将代码剪切并粘贴到 IntelliJ 中会搞砸编辑器;正如@Palcente 所说,可能存在编码问题。
但是,我建议改用 StringTokenizer。
StringTokenizer sTok = new StringTokenizer(phrase, ";");
然后您可以对其进行迭代,从而生成更好(和更安全)的代码。
phrase
包含 bi-directional characters like right-to-left embedding。这就是为什么有些编辑器无法正确显示字符串的原因。
这段代码显示了 String
中的实际字符(对于某些人来说 phrase
不会以正确的方式显示在这里,但它在 Eclipse 中编译并看起来很好)。我只是将 left-right 翻译成 ->,right-to-left 翻译成 <- 和 流行方向 与 ^:
public static void main(String[]args) {
String phrase = ";14/May/2015 FC Barcelona VS. Real Madrid";
String[] dateSplit = phrase.split(";");
for (String d : dateSplit) {
System.out.println(d);
}
char[] c = phrase.toCharArray();
StringBuilder p = new StringBuilder();
for (int i = 0; i < c.length;i++) {
int code = Character.codePointAt(c, i);
switch (code) {
case 8234:
p.append(" -> ");
break;
case 8235:
p.append(" <- ");
break;
case 8236:
p.append(" ^ ");
break;
default:
p.append(c[i]);
}
}
System.out.println(p.toString());
}
打印:
<- ; -> 14/May/2015 ^ ^ <- -> FC ^ ^ <- -> Barcelona ^ ^ <- -> VS. ^ ^ <- -> Real ^ ^ <- -> Madrid
String#split()
将作用于 实际 字符串,而不作用于编辑器显示的内容,因此您可以看到 ;
是第二个字符在 right-to-left 之后,它给出(再次注意显示:;
不是 dateSplit[1]
中字符串的一部分):
dateSplit[0] = "";
dateSplit[1] = "14/May/2015 FC Barcelona VS. Real Madrid";
我猜您是从右到左处理来自一种语言 writing/reading 的数据,并且与从左到右的足球队名称有些混合。解决方案当然是摆脱方向字符并将 ;
放在正确的位置,即作为标记的分隔符。
我想用分号(";")分割字符串:
String phrase = ";14/May/2015 FC Barcelona VS. Real Madrid";
String[] dateSplit = phrase.split(";");
System.out.println("dateSplit[0]:" + dateSplit[0]);
System.out.println("dateSplit[1]:" + dateSplit[1]);
但它删除了“;”来自字符串并将所有字符串放入 'datesplit1' 所以输出是:
dateSplit[0]:
dateSplit[1]:14/May/2015 FC Barcelona VS. Real Madrid`
并在做
System.out.println("Real String :"+phrase);
打印的字符串是
Real String :;14/May/2015 FC Barcelona VS. Real Madrid
我 rewrote
你的代码,而不是从这里处理,它工作得很好。
public static void main(String[] args) {
String phrase = "14/May/2015; FC Barcelona VS. Real Madrid";
String[] dateSplit = phrase.split(";");
System.out.println("dateSplit[0]:" + dateSplit[0]);
System.out.println("dateSplit[1]:" + dateSplit[1]);
}
将代码剪切并粘贴到 IntelliJ 中会搞砸编辑器;正如@Palcente 所说,可能存在编码问题。
但是,我建议改用 StringTokenizer。
StringTokenizer sTok = new StringTokenizer(phrase, ";");
然后您可以对其进行迭代,从而生成更好(和更安全)的代码。
phrase
包含 bi-directional characters like right-to-left embedding。这就是为什么有些编辑器无法正确显示字符串的原因。
这段代码显示了 String
中的实际字符(对于某些人来说 phrase
不会以正确的方式显示在这里,但它在 Eclipse 中编译并看起来很好)。我只是将 left-right 翻译成 ->,right-to-left 翻译成 <- 和 流行方向 与 ^:
public static void main(String[]args) {
String phrase = ";14/May/2015 FC Barcelona VS. Real Madrid";
String[] dateSplit = phrase.split(";");
for (String d : dateSplit) {
System.out.println(d);
}
char[] c = phrase.toCharArray();
StringBuilder p = new StringBuilder();
for (int i = 0; i < c.length;i++) {
int code = Character.codePointAt(c, i);
switch (code) {
case 8234:
p.append(" -> ");
break;
case 8235:
p.append(" <- ");
break;
case 8236:
p.append(" ^ ");
break;
default:
p.append(c[i]);
}
}
System.out.println(p.toString());
}
打印:
<- ; -> 14/May/2015 ^ ^ <- -> FC ^ ^ <- -> Barcelona ^ ^ <- -> VS. ^ ^ <- -> Real ^ ^ <- -> Madrid
String#split()
将作用于 实际 字符串,而不作用于编辑器显示的内容,因此您可以看到 ;
是第二个字符在 right-to-left 之后,它给出(再次注意显示:;
不是 dateSplit[1]
中字符串的一部分):
dateSplit[0] = "";
dateSplit[1] = "14/May/2015 FC Barcelona VS. Real Madrid";
我猜您是从右到左处理来自一种语言 writing/reading 的数据,并且与从左到右的足球队名称有些混合。解决方案当然是摆脱方向字符并将 ;
放在正确的位置,即作为标记的分隔符。