String.spit()的使用方法总结

 

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 - 如果正则表达式的语法无效

<think>好的,我现在需要帮助用户解答关于Linux split命令的使用教程,包含实际案例。首先,我得回忆一下split命令的基本功能和常用参数。split主要用于分割大文件成小文件,常见的参数有按行数分割(-l)、按文件大小分割(-b)、指定输出文件的前缀等。用户可能需要知道这些参数的具体用法和实例。 接下来,我需要查阅提供的引用资料,确保信息准确。引用1提到安装split命令的方法,如果用户遇到命令未找到的情况,需要指导他们安装coreutils包。引用2、3、5给出了split的基本使用方式,比如按行数或大小分割,并提到了默认的前缀和分割后的文件名规则。引用4提到了csplit,但用户的问题主要是关于split,所以可能暂时不需要涉及csplit。 用户要求包含实际案例,所以我需要准备几个常见的使用示例。例如,按行数分割文件、按文件大小分割、自定义前缀等。每个示例都需要具体的命令和说明,这样用户能清楚如何操作。同时,还要注意语法是否正确,比如参数的位置和格式。 另外,用户可能关心分割后的文件命名规则,比如默认是xaa、xab等,如何修改前缀。还有分割后的文件如何合并回去,这也是常见的问题,应该包含在教程中。 需要确保回答结构清晰,分步骤或分点说明,让用户容易理解。同时,根据系统级指令,数学表达式要用$...$,但这个问题可能不涉及太多数学内容,不过如果有涉及行数或大小的数字,可能需要用行内格式,比如每个文件$1000$行。 最后,生成相关问题,考虑用户可能进一步想了解的内容,比如如何合并文件、处理不同后缀名、或者split的其他高级用法等。要确保问题相关且有参考价值。</think>### Linux split命令使用教程及实例详解 #### 一、命令基础功能 `split`命令用于将大文件按指定规则分割为多个小文件,支持按行数、文件大小分割,默认生成文件名格式为$xaa$、$xab$等。常见场景包括日志分割、数据传输优化等[^3][^5]。 #### 二、参数说明 1. `-l <行数>`:按行数分割 2. `-b <大小>`:按文件大小分割(单位:K/M/G) 3. `-d`:使用数字后缀替代字母 4. `-a <长度>`:设置后缀长度 5. `<前缀>`:自定义输出文件名前缀 #### 三、实用案例演示 1. **按行数分割文件** 将`mylog.log`每$500$行分割成独立文件,前缀设为`log_part_`: ```bash split -l 500 mylog.log log_part_ ``` 生成文件:`log_part_aa`, `log_part_ab`等[^2] 2. **按文件大小分割** 将`large_video.mp4`每$100$MB分割: ```bash split -b 100M large_video.mp4 video_part_ ``` 生成文件:`video_part_aa`, `video_part_ab`等 3. **数字后缀命名** 分割文件并使用数字编号: ```bash split -l 2000 -d -a 3 access.log web_log_ ``` 生成文件:`web_log_000`, `web_log_001`等 4. **自定义后缀长度** 设置$4$位字母后缀: ```bash split -l 3000 -a 4 data.csv segment_ ``` 生成文件:`segment_aaaa`, `segment_aaab`等 #### 四、文件合并方法 使用`cat`命令合并分割后的文件: ```bash cat log_part_* > restored.log ``` #### 五、注意事项 - 默认分割单位:行数分割时单位为行,大小分割时需明确单位(如`10K`、`5M`) - 安装问题:若提示`command not found`,执行`apt-get install coreutils`安装[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值