Java官方文档指出:
"boo:and:foo"例如,字符串使用这些表达式生成以下结果Regex结果:
{ "boo", "and", "foo" }"
Run Code Online (Sandbox Code Playgroud)
这就是我需要它工作的方式.但是,如果我运行这个:
public static void main(String[] args){
String test = "A|B|C||D";
String[] result = test.split("|");
for(String s : result){
System.out.println(">"+s+"<");
}
}
Run Code Online (Sandbox Code Playgroud)
它打印:
><
>A<
>|<
>B<
>|<
>C<
>|<
>|<
>D<
Run Code Online (Sandbox Code Playgroud)
这远非我所期望的:
>A<
>B<
>C<
><
>D<
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
在Java 8之前我们拆分空字符串之类的
String[] tokens = "abc".split("");
Run Code Online (Sandbox Code Playgroud)
分裂机制会在标有的地方分开 |
|a|b|c|
Run Code Online (Sandbox Code Playgroud)
因为""每个字符前后都有空格.因此,它最初将生成此数组
["", "a", "b", "c", ""]
Run Code Online (Sandbox Code Playgroud)
然后将删除尾随的空字符串(因为我们没有明确地为limit参数提供负值),所以它最终会返回
["", "a", "b", "c"]
Run Code Online (Sandbox Code Playgroud)
在Java 8中,拆分机制似乎已经发生了变化.现在我们用的时候
"abc".split("")
Run Code Online (Sandbox Code Playgroud)
我们将得到["a", "b", "c"]数组,而不是["", "a", "b", "c"]看起来像开始时的空字符串也被删除.但是这个理论失败了,例如
"abc".split("a")
Run Code Online (Sandbox Code Playgroud)
在start时返回带有空字符串的数组["", "bc"].
有人可以解释这里发生了什么,以及这些案例的拆分规则在Java 8中是如何变化的?
由于String.split()使用正则表达式,此片段:
String s = "str?str?argh";
s.split("r?");
Run Code Online (Sandbox Code Playgroud)
...收益率: [, s, t, , ?, s, t, , ?, a, , g, h]
什么是在r?序列上拆分此字符串以使其生成的最优雅的方法[st, st, argh]?
编辑:我知道我可以摆脱这个问题?.问题是我不知道分隔符,我不想通过编写escapeGenericRegex()函数来解决这个问题.
我想根据所有可能的分隔符解析整个文件,如逗号,冒号,冒号,句号,空格,hipns等.
假设我有一个假设的字符串"嗨,X怎么样:你呢?" 我应该得到输出数组的项目Hi,X,How,how,are,any和you.
如何在String.split方法中指定所有这些分隔符?
提前致谢.
我正在做一个简单的代码
String splitString = "122$23$56$rt";
for(int i=0;i<splitString.split("$").length;i++){
System.out.println("I GOT IS :: "+splitString.split("$")[i]);
}
Run Code Online (Sandbox Code Playgroud)
当我分裂的时候
splitString.split("$")
Run Code Online (Sandbox Code Playgroud)
它给了我输出 [122$23$56$rt]
为什么这不是'$'的夹板?
你好朋友我有字符串喜欢
Android_a_b.pdf
Run Code Online (Sandbox Code Playgroud)
我想把它拆分成Android_a_b和pdf
我尝试下面的代码
String s="Android_a_b.pdf";
String[] parts = s.split(".");
String part1 = parts[0];
String part2 = parts[1];
Run Code Online (Sandbox Code Playgroud)
当我运行上面的代码时,它给我错误
11-05 09:42:28.922: E/AndroidRuntime(8722): Caused by: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
Run Code Online (Sandbox Code Playgroud)
在String part1 = parts[0];行
任何想法我怎么解决它?
如何使用JSTL在jsp页面内拆分用"/"分隔的字符串?
我有一个这种格式的字符串:**
"23/11/2010"
*.有时,字符串可能是这样的:*
"1/1/2010"
*.我需要做一些事情才能将字符串拆分为三个不同的子字符串:*
"23","11","2010".
**这是因为我需要将它们中的每一个放在三个不同的文本字段中,如下所示:
<input type="text" value="23">/
<input type="text" value="11">/
<input type="text" value="2010">
Run Code Online (Sandbox Code Playgroud)
我还找不到任何有用的例子.
提前致谢!
我有一个电子邮件的字符串.无论字符串/电子邮件是什么,我希望能够获得电子邮件的域名部分.基本上我想要在字符串的@部分之后抓住字符.例如,对于testing@kotlin.com,我在kotlin.com部分之后.
val emailString ="hello@world.com"
我有一个这种格式的字符串(来自EBS Payment Gateway的回复)
key1=value1&key2=value2&key3=value3
Run Code Online (Sandbox Code Playgroud)
如何在不使用split方法的情况下绑定到此类对象?
public class MyClass {
private String key1;
private String key2;
private String key3;
// getter and setter methods
...
}
Run Code Online (Sandbox Code Playgroud) 我正在编写一个JAVA程序来为项目提取HTML数据.这是HTML代码
<td align="left" valign="top" class="style3">
PC / Van<br>$14 (Mon-Fri, excl PH)
<br>
$18 (Sat, Sun & PH)<br><br>$70/Day(Mon-Fri, excl PH: Entry - 24:00)
<br>
$100/day (Sat, Sun & PH: Entry - 24:00)
</td></tr>
Run Code Online (Sandbox Code Playgroud)
以下是我提取的JAVA代码.
String connect1 = url1.toString();
Document doc1 = Jsoup.connect(connect1).get();
// get all links
Elements type1 = doc1.select("[class=\"style3\"]");
int size = type1.size();
try {
String text =type1.first.text();
System.out.println(text);
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出是
PC / Van$14 (Mon-Fri, excl PH)$18 (Sat, Sun & PH)$70/Day(Mon-Fri, excl PH: Entry …Run Code Online (Sandbox Code Playgroud)