01. java分割字符串
(1)java分割字符串函数 split():
public String[] split(String regex) {
return split(regex, 0);
}
注意: 【 . 、 | 】和 【* 】等转义字符,必须得加 【\ \ 】 。
str.split("\\."); //用 . 作为分割符分割字符串
原因:上面是String类中split方法的源码,参数名为regex,看到这里大家应该了解到我们传进用来分割的参数实际上是一个正则表达式,而Java会使用正则来分割原有字符串。而 “|” 和 “.”是正则表达式的符号,即在正则中他们不是表达的字面本意,结果自然就不是预期想象的分割后的字符串数组了。
注意:多个分隔符,可以用 | 作为连字符。
str.split(",|。");//用 ,和 。 作为分隔符分割字符串
(2)在项目中创建division类,在主方法中创建String型变量,用split()方法将字符串变量进行分割。
①定义要分割的字符串
②用split函数以规定符号分割字符串(split用法:str.split(String sign))
③将分割出的新字符段逐一存入新数组并输出
public class division
{
public static void main(String[] args)
{
//定义一个字符串(中英文皆可)
String str=("Sometimesinlife.You find a special friend.Someone who changes your life just by being part of it.");
//System.out.println("原字符的长度是:"+str.length());
String[] news=str.split("\\.");//调用split方法用 . 分割字符串,并将分割出的字符段存入数组news中
//用循环逐一输出news数组中的内容,即分割出的字符段
for(int i=0;i<news.length;i++)
{
System.out.println(news[i]);
}
}
}
编译运行结果:
02. C语言分割字符串
此处自己写了一个简易的c语言实现split分割方法,此程序仅实现英文字符串分割,且还有漏洞,之后会逐渐完善。
(1)方法实现功能:
char s[]="We are friend.I am lucky.";//存入s的字符串
split(s,".","\n"); //用'\n'(换行符)替换字符串s中的".";
输出结果:
原字符串:We are friend.I am lucky.
分割后:
We are friend
I am lucky
(2)方法实现思路:
①定义split()方法,编写头文件split.h
- 找出字符串中要切割的字段,即要以哪个字符作为切割符,将切割符换为"\n"即可实现切割。
②编写主函数,直接调用split.h,直接输出切割后的字符数组。
(3)实现代码
在此定义一个头文件 split.h,用于之后在主函数直接调用
split.h 代码:
#include<stdio.h>//包含头文件<stdio.h>
#include <string.h>//包含头文件<string.h>
//声明指针变量,用于存放字符串
//字符串s:待分割字符串;字符串v:分隔符(符号和字母均可);f:替换v的字符
int split(char *s,char *v,char *f)//定义split方法
{
int i,t;
int lens=strlen(s);//计算字符串s的长度
int lenv=strlen(v);//计算字符串v的长度
//若切割符能在字符串s中找到,即切割符v(t)等于字符串s中的第i个字符,则继续使用字符f(t)调换v(t)的内容,通过层层替换实现字符串分割
for(i=0; i<lens; ++i)
{
for(t=0; t<lenv; ++t)
{
if(v[t]==s[i])
continue; //跳出当前循环执行下面的步骤
else break;//若该字符串中不含切割符,则无法切割,结束循环
}
if(t==lenv)
{
int lenf=strlen(f);
if(lenf==lenv)
for(t=0; t<lenf; ++t)
s[i+t]=f[t];
}
}
return 0;
}
主方法文件中直接调用split.h
split.c的内容为:
#include<stdio.h>
#include"split.h"
int main()
{
char u[]={"Sometimes in life.You find a special friend.Someone who changes your life just by being part of it."};
split(u,".","\n");//用换行符'\n'替换字符串u中的'.'
printf("%s",u);//输出切割后的字符串u
return 0;
}
编译运行结果: