1. java split()函数,要分割的字符串中没有指定的分隔符,返回什么结果
返回值是一个数组大小为1的数组,arr(0)=“12345”。
2. java split分割字符后怎么使用
对于"a b c"中,有3个字符串,用空格分隔,在java中,我用String str="a b c";接收后再用str.split(" ");将"a b c"分隔到一个Stirng数组,即String [] result=str.split(" ");此时数组中的值为[a,b,c],我们可以循环打印:
for(inti=0;i<result.length;i++){
System.out.println(result[i]);
}
也就是说,我们可以轻易取得每个分隔的字符串(即a或者b或者c等),至于再进行什么操作,就随你了!
3. java中string的split功能,分割空格失败
这里有可能是中文全角的空格,属于特殊字符,\\s 是匹配不了的。 对应的ascii 值 为160.
验证方法:
int a = 160;
char c = (char)a;
String s = String.valueOf(c);
String[] strb1=str1.split(s);
如果能拆分,就确定是这个问题。
当然有个解决方法是 替换: strb11 = strb1.replaceAll(String.valueOf((char)160), " ");
然后就可以按照你之前的方式处理了
4. java里面的split方法
java和c#的split都差不多
以下是java的split的特性及一些例子:
java.lang.string.split
split 方法
将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
stringObj.split([separator,[limit]])
stringObj
必选项。要被分解的 String 对象或文字。该对象不会被 split 方法修改。
separator
可选项。字符串或 正则表达式 对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽
略该选项,返回包含整个字符串的单一元素数组。
limit
可选项。该值用来限制返回数组中的元素个数。
说明:
split 方法的结果是一个字符串数组,在 stingObj 中每个出现 separator 的位置都要进行分解
。separator 不作为任何数组元素的部分返回。
示例1:
public class SplitDemo {
public static String[] ss = new String[20];
public SplitDemo() {
String s = "The rain in Spain falls mainly in the plain.";
// 在每个空格字符处进行分解。
ss = s.split(" ");
}
public static void main(String[] args) {
SplitDemo demo = new SplitDemo();
for (int i = 0; i < ss.length; i++)
System.out.println(ss[i]);
}
}
程序结果:
The
rain
in
Spain
falls
mainly
in
the
plain.
示例2:
public class SplitDemo {
public static String[] ss = new String[20];
public SplitDemo() {
String s = "The rain in Spain falls mainly in the plain.";
// 在每个空格字符处进行分解。
ss = s.split(" ", 2);
}
public static void main(String[] args) {
SplitDemo demo = new SplitDemo();
for (int i = 0; i < ss.length; i++)
System.out.println(ss[i]);
}
}
程序结果:
The
rain in Spain falls mainly in the plain.
示例3:
public class SplitDemo {
public static String[] ss = new String[20];
public SplitDemo() {
String s = "The rain in Spain falls mainly in the plain.";
// 在每个空格字符处进行分解。
ss = s.split(" ", 20);
}
public static void main(String[] args) {
SplitDemo demo = new SplitDemo();
for (int i = 0; i < ss.length; i++)
System.out.println(ss[i]);
}
}
程序结果:
The
rain
in
Spain
falls
mainly
in
the
plain.
示例4:
public class SplitDemo {
public static void main(String[] args) {
String value = "192.168.128.33";
String[] names = value.split(".");
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
}
}
运行结果:
对,没看错!没有任何输出!
让我们来看看 split 方法的方法签名吧:
public string[] split(string regex)
这里的参数的名称是 regex ,也就是 regular expression (正则表达式)。这个参数并不是一个简单的分割用的字符,而是一个正则表达式,看了 split 方法的实现代码就更坚定了我们的信心:
public string[] split(string regex, int limit) {
return pattern.compile(regex).split(this, limit);
}
split 的实现直接调用的 matcher 类的 split 的方法。读者已经知道,“ . ”在正则表达式中有特殊的含义,因此我们使用的时候必须进行转义。
只要将
String[] names = value.split(".");
改为
String[] names = value.split("//.");
就可以了。
输出结果:
192
168
128
33
再加一点儿补充(这是Java帮助文档中的,更清晰一些):
public String[] split(String regex,int limit)根据匹配给定的正则表达式来拆分此字符串。
此方法返回的数组包含此字符串的每个子字符串,这些子字符串由另一个匹配给定的表达式的子字符串终止或由字符串结束来终止。数组中的子字符串按它们在此字符串中的顺序排列。如果表达式不匹配输入的任何部分,则结果数组只具有一个元素,即此字符串。
limit 参数控制模式应用的次数,因此影响结果数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后项将包含超出最后匹配的定界符的所有输入。如果 n 为非正,则模式将被应用尽可能多的次数,而且数组可以是任意长度。如果 n 为零,则模式将被应用尽可能多的次数,数组可有任何长度,并且结尾空字符串将被丢弃。
例如,字符串 "boo:and:foo" 使用这些参数可生成下列结果:
Regex Limit 结果
: 2 { "boo", "and:foo" }
: 5 { "boo", "and", "foo" }
: -2 { "boo", "and", "foo" }
o 5 { "b", "", ":and:f", "", "" }
o -2 { "b", "", ":and:f", "", "" }
o 0 { "b", "", ":and:f" }
这种形式的方法调用 str.split(regex, n) 产生与以下表达式完全相同的结果:
Pattern.compile(regex).split(str, n)
参数:
regex - 定界正则表达式
limit - 结果阈值,如上所述
返回:
字符串数组,根据给定正则表达式的匹配来拆分此字符串,从而生成此数组
抛出:
PatternSyntaxException - 如果正则表达式的语法无效
从以下版本开始:
1.4
public String[] split(String regex)根据给定的正则表达式的匹配来拆分此字符串。
该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,结果数组中不包括结尾空字符串。
例如,字符串 "boo:and:foo" 产生带有下面这些表达式的结果:
Regex 结果
: { "boo", "and", "foo" }
o { "b", "", ":and:f" }
参数:
regex - 定界正则表达式
返回:
字符串数组,根据给定正则表达式的匹配来拆分此字符串,从而生成此数组。
抛出:
PatternSyntaxException - 如果正则表达式的语法无效
5. java的String类的split方法为何能生成空值
spilt是正则表达式中的一种,用来切分字段,如果切分的字段连续出现,就会生成空值。
用法为:字符串.spilt("特定字符"),输出结果为String[]类型。
如:String [] list = "abbcabcabc".spilt("b");
那么结果就是“a”,"","ca","ca","c";
获取结果可以通过:list.get(下标)的形式(从0开始),如:list.get(1) 的结果就是“”(空值)。
6. java的split()方法,用空字符串对字符串"ABCDE"进行划分得到的第一个字符串是空字符串吗求解释第0行。
输出结果
packagecom.kidd.test.;
importjava.util.Arrays;
/**
*Helloworld!
*
*/
publicclassExecute{
publicstaticvoidmain(String[]args){
Stringstring="ABCDE";
String[]ss=string.split("");
System.out.println(Arrays.toString(ss));
}
}
7. java split方法以逗号分隔如字符串",,,,,,"为什么分隔出来是一个空字符串数组
在数据库系统中,空值是(什么也没有)。
解释:
所谓的NULL就是什么都没有,连\0都没有,\0在字符串中是结束符,但是在物理内存是占空间的,等于一个字节,而NULL就是连这一个字节都没有。在数据库里是严格区分的,任何数跟NULL进行运算都是NULL, 判断值是否等于NULL,不能简单用=,而要用IS关键字。
空 (NULL)
值表示数值未知(在实际意义中,如果使用null,就是代表变量值是未知的,比如手机号码设为null,说明不知道手机号码是什么)。空值不同于空白或零值。没有两个相等的空值。比较两个空值或将空值与任何其它数值相比均返回未知,这是因为每个空值均为未知。
在写入数据的时候,空字符串也是一个确定的值,所以就算定义了 NOT NULL 也可以被写入。
8. java String.split("\\&")切割"&&&&&&"为什么不能切割成七个空字符串(String[7])如何才能正确切割
正确的分割方法是使用
s.split("\u0026"); 就可以了。
9. 我想用split(";")来分隔我的Java代码, 但是若是字符串中有`;`我该怎么办
你的问题在于转义的双引号字符串内的分号不应该拿来分割。未解决这个问题只能将转义的部分单独截取出来,不参与分割,等其他部分分割结束后,再将转义的内容拼接进去即可。
为防止双引号转义符内部还有其他双引号转义符"的影响,对\"用#@#占位符将之替换。
需要引入第三方工具类辅助进行占位符替换:
import org.apache.commons.lang3.StringUtils;
依赖为:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
代码为:
public class Main {
public static void main(String[] args) {
String a = "String a = ";";String b = "aaaa";";
String b = "String a = "\";";String b = "aaaa";";
System.out.println(codeSplit(a));
System.out.println(codeSplit(b));
}
private static List<String> codeSplit(String a){
//排除双引号转义符内部还有其他双引号转义符"的影响,用“#@#”占位符将之替换
a = StringUtils.replace(a, "\"", "#@#");
List<String> result = new ArrayList<>();
boolean start = true;//检查双引号转义符,为true时代表找到双引号转义符的左转义符,为false时代表找到双引号转义符的右转义符
while (a.indexOf(""") > 0) {
int index = a.indexOf(""");//index:双引号左转义符位置
//发现双引号转义符时,将当前字符串的(0 至 index + 1)字符截取出来作为tmp
String tmp = a.substring(0, index + 1);
a = a.substring(index + 1);//将截取剩下的部分重新赋值给原字符串
if (start) {
//发现双引号转义符的左转义符,对tmp字符串按分号进行分割,将不为空的结果添加到结果集中
String[] stArr = tmp.split(";");
for (String s : stArr) {
if (s.length() > 0) {
result.add(s);
}
}
} else {
//发现双引号转义符的右转义符,不进行分割,将tmp字符串拼接到结果集的最后一个字符串中
String end = result.get(result.size() - 1);
end += tmp;
result.remove(result.size() - 1);
result.add(end);
}
start = !start;//转置双引号转义符标志,正常情况下双引号转义符必须成对出现,否则将得到预期外的结果
}
//跳出循环后对剩余的a字符串再做一次分割
String[] stArr = a.split(";");
for (String s : stArr) {
if (s.length() > 0) {
result.add(s);
}
}
//将结果集内的“#@#”占位符还原为"
return result.stream().map(s -> StringUtils.replace(s, "#@#", "\"")).collect(Collectors.toList());
}
}
10. JAVA中可以用split按照空白字符串“”拆分 在C#中该如何实现
这只要用ToArray方法就可以了。
string name = "WTO";
string[] c = name.Select(s => s.ToString()).ToArray();
//注意,用ToArray返回的是char[],要将每个char转为string。