【java】【C语言】字符串(英文)的分割实现

本文探讨了在Java和C语言中如何实现字符串分割。在Java中,使用String类的split()方法,需要注意正则表达式的使用,例如".", "|"等需要转义。在C语言中,自定义了一个简易的split方法,仅适用于英文字符串分割,通过替换切割符实现。文章提供了C语言的split方法实现思路及代码示例。" 92977345,8256975,理解网络环路:原因、预防与排查,"['网络', '运维', '交换机', '路由', '故障排查']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
}

编译运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值