今天发生在我身上的java的行为String.split()很奇怪.
实际上我想将一个字符串拆分"aa,bb,cc,dd,,,ee"为数组,.split(",")这给了我一个["aa","bb","cc","dd","","","ee"]长度为7 的String数组.
但是当我尝试将String拆分"aa,bb,cc,dd,,,,"为数组时,这给了我一个长度为4的数组意味着只["aa","bb","cc","dd"]拒绝所有下一个空白字符串.
我想要一个将String拆分"aa,bb,cc,dd,,,,"为数组的过程["aa","bb","cc","dd","","",""].
java.lang.String api有可能吗?提前致谢.
据我所知,以下程序应0,0作为输出打印.
但是,当我运行这个程序时,我得到1,0了输出.
public class Test1 {
public static void main(String[] args) {
System.out.println("".split(";").length); //1
System.out.println(";".split(";").length);//0
}
}
Run Code Online (Sandbox Code Playgroud)
请帮我理解这里发生了什么?
这是这个问题的后续行动.
问题在于下面的第二行.
"".split("x"); //returns {""} // ok
"x".split("x"); //returns {} but shouldn't it return {""} because it's the string before "x" ?
"xa".split("x"); //returns {"", "a"} // see?, here "" is the first string returned
"ax".split("x"); //returns {"a"}
Run Code Online (Sandbox Code Playgroud) 这是我的代码:
serialNumbers = "";
String[] serialArray = serialNumbers.split(",");
int arrayLength = serialArray.length;
Run Code Online (Sandbox Code Playgroud)
即使serialArray中没有值,arrayLength也会显示1.我希望在这种情况下长度应该返回0.
我试图拆分一个字符串并保留空字符串.幸运的是,我找到了一个很有前景的解决方案,它给了我预期的结果,如下面的REPL会话描
scala> val test = ";;".split(";",-1)
test: Array[String] = Array("", "", "")
Run Code Online (Sandbox Code Playgroud)
我很好奇第二个参数实际上做了什么并潜入scala文档但除此之外什么都没找到:

在REPL解释器中我只能获得以下信息:
scala> "asdf".split
Run Code Online (Sandbox Code Playgroud)
TAB
def split(String): Array[String]
def split(String, Int): Array[String]
Run Code Online (Sandbox Code Playgroud)
问题 是否有人为这些记录严重的参数提供备用文件来源?或者有人可以解释这个2dn参数对这个特定功能的作用吗?
考虑以下:
=> (even? (count []))
true
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.现在考虑(假设我的文件是空的):
(odd? (count (str/split (slurp my-file) #"\|")))
true
Run Code Online (Sandbox Code Playgroud)
错误...为什么从空文件返回的向量不均匀(零)?
=>(str/split (slurp my-file) #"\|")
[""]
Run Code Online (Sandbox Code Playgroud)
啊,有人可以解释为什么在这种情况下返回一个空字符串?
我正在尝试确定文件中是否有奇数记录.