将英文句子拆成一个个单词(对于句子中可能出现的不同情况)

最近有个需求,后台给我一个英文句子,我要把其中每个单词拆出来,然后计算出单词的个数,把每个单词布局到一个个横线上。  有的人会想,很好搞啊,直接以空格去拆分就得了,然后再判断每个单词的最后一个字符是不是逗号等符号,是的话去掉。

这样做的话,那得要求后台的英文句子高度标准,假如句子里有连续的两个空格怎么办,这个时候拆分出来的单词就会出现空格,单词数就会不准确。这个还好说,有解决方法:如果判断出单词是空格的话,去掉就好。可是另外一种情况,比如句子是 “Yeah,I need a word”。Yeah 和 I 之间只有逗号,没有空格,这个时候如果再去做判断就显得很麻烦。。更何况后台给出的问题情况多种多样,你懂的。。根本无法单纯的用以空格进行拆分的方法去解决这个问题。所以怎么解决呢?  对,逐个字符遍历的方法。 现列出两种方法,两种方法的思路是一样的。。

假如句子就是:

NSString *sentence =
@"Yeah,...I need  a world.";

方法一:

- (NSMutableArray *)componentsWithString:(NSString *)str

{

NSMutableArray *wordArray = [NSMutableArray
array];

NSString *wordStr = @"";

for (int y =
0;y < str.length; y++) {

//利用截取字符串的方法截取出每个字符

NSString *string1 = [str
substringFromIndex:y];

NSString *string2 = [string1
substringToIndex:1];

//转化为字符的形式,此处编码方式可以是NSUTF8StringEncoding

const
char *s = [string2 cStringUsingEncoding:NSASCIIStringEncoding];

//判断是不是字母

//针对于上引号’这种情况:s[0]==‘\‘‘

//针对于有短横线 - 这种情况:str[0]==‘-‘

if ((s[0] >=65 && s[0]<=90) || (s[0]>=97 && s[0]<=122)
|| s[0]==‘\‘‘ || str[0]==‘-‘) {

NSString *string = [NSString
stringWithCString:s encoding:NSUTF8StringEncoding];

wordStr = [wordStr stringByAppendingString:string];

}else {

if (wordStr.length >
0) {

[wordArray addObject:wordStr];

}

wordStr = @"";

}

}

return wordArray;

}

方法二:

- (NSMutableArray *)componentsWithString1:(NSString *)str

{

NSMutableArray *wordArray = [NSMutableArray
array];

NSString *wordStr = @"";

for (int k=0; k<strlen(str.UTF8String); k++) {

if ((str.UTF8String[k] >=
97 && str.UTF8String[k] <=
122)|| (str.UTF8String[k] >= 65 && str.UTF8String[k] <=
97 || (str.UTF8String[k]==‘\‘‘) || (str.UTF8String[k]==‘-‘ )) {

wordStr = [wordStr stringByAppendingFormat:@"%c",str.UTF8String[k]];

}else {

if (wordStr.length >
0) {

[wordArray addObject:wordStr];

wordStr = @"";

}

}

}

return wordArray;

}

从以上可以看出,方法二较为简便,推荐用方法二。

时间: 2024-10-11 17:43:58

将英文句子拆成一个个单词(对于句子中可能出现的不同情况)的相关文章

学编程,学单词.....在学习中积累自己的单词(不断更新__ing)

可以去肆意大话天下,可以去小民一般的言语,但是一定要清楚,知识的积累,至于心中,这样,你才能低至市井,上至高阁....畅通无阻! 1.  Loowater  厕所水 , Loo 盥洗室 学编程,学单词.....在学习中积累自己的单词(不断更新__ing),布布扣,bubuko.com

大量经典英文高清动画电影 英语学习视频 中英字幕 儿歌 百度网盘

大量经典英文高清动画电影 英语学习视频 中英字幕 儿歌 百度网盘 **大量迪士尼.皮克斯.索尼的原版英文动画电影** 欢迎来到小店"雄狐工作室",小店的地址是>> 各位亲: 如果你是一个家长,想让小孩在课余时间通过快乐地看英文原版动画电影来提升英语吗? 如果你是一个小学/中学英语教师,想让你的学生们在课堂上观看英语动画电影,寓教于乐吗? 如果你是一个爱好动画/动漫的中学生/大学生,想通过英文动画片来提高自己的英文水平吗? 或者你只是单纯地想自己或者让小孩看看.接触一些优秀的

按单词将句子逆序

给定一个字符串,按单词将该字符串逆序,比如给定"This is a boy",则输出是"boy a is This",为了简化问题,字符串中不包含标点符号. 分两步 1 先按单词逆序得到"sihT si a yob" 2 再整个句子逆序得到"boy a is This" //头文件 #include <stdio.h> #include <stdlib.h> #include <string.h&

请问如何在PS中将一张图标里的各个小图标分离成一个个图标?

1.用切片工具比较简单快捷,把要切的图标一个个的切画出来,切好后存储保存格式为web,导出时候会出现一个images文件里面就是刚切好的图片 2.用裁剪的方式裁剪你要小图标,(你可以记住第一个裁剪的长宽属性参数以便下一个图标使用裁剪时设置裁剪属性,这样裁剪出来大小一致)然后保存,之后返回原图(历史记录的第一步“打开”单击)继续裁剪下一个图标,保存裁剪文件,然后继续下一图标---------

统计句子中的不同单词个数(句子中含有标点符号,单词不区分大小写)

#include<iostream> #include<sstream> #include<string> #include<cctype> #include<set> using namespace std; set<string> dict; int main() { string s,buf; while(getline(cin,s)) { dict.clear(); for(int i=0;i<s.length();i+

处理100个句子记5500个单词的程序(将excel 转为json)

1 import xlrd,json 2 3 data = xlrd.open_workbook("C:\\Users\\zcb\\Desktop\\data.xlsx") 4 5 sheet1 = data.sheet_by_name("Sheet1") 6 final_data = [] 7 idx = 1 8 for i in range(51,59): 9 row = sheet1.row_values(i) 10 sentence ={} 11 sente

英文不好的可以用到(更新中...)

Email You don't have any verified emails. We recommend verifying at least one email. Email verification helps our support team help you in case you have any email issues or lose your password.你没有任何验证电子邮件.我们建议至少一个电子邮件验证.电子邮件验证有助于我们的支持团队,帮助你如果你有任何问题或者丢

关于Solr搜索标点与符号的中文分词你必须知道的(mmseg源码改造)

摘要:在中文搜索中的标点.符号往往也是有语义的,比如我们要搜索“C++”或是“C#”,我们不希望搜索出来的全是“C”吧?那样对程序员来说是个噩梦.然而在中文分词工具mmseg中,它的中文分词是将标点与符号均去除的,它认为对于中文来讲标点符号无意义,这明显不能满足我们的需求.那么怎样改造它让它符合我们的要求呢?本文就是针对这一问题的详细解决办法,我们改mmseg的源代码. 关键字:Solr, mmseg, 中文, 分词, 标点, 符号, 语义 前提:Solr(5.0.0版本),mmseg4j(1.

solr介绍一:Analyzer(分析器)、Tokenizer(分词器)

首先,不知道大家在前面的例子中没有试着搜索文本串,就是在第二节,我们添加了很多文档.如果字段值是一个文本.你如果只搜索这个字段的某个单词,是不是发现搜不到? 这就是因为我们没有配置Analyzer,因此在搜索的时候会“全匹配”.可以从直观感觉上理解为SQL的  like和= 的区别. 通过前面这段引文,我们就能知道:Analyzer就是分析我们的文本的. 一般来说:solr.TextField类型的字段才需要分析器. 最简单的配置分析器的如下: [html] view plaincopy <fi