想了一个比较笨的方法。先在R里定义这个函数:
split.string<-function(string){
str2<-strsplit(string,"")[[1]]
string.split<-NULL
j<-1
string.split[j]<-str2[1]
find.type<-function(char){
if(grepl("[[:alpha:]]",char))
type<-"alphabet"
else if(grepl("[[:digit:]]",char))
type<-"digit"
else type<-"chinese"
type
}
type<-find.type(str2[1])
for(i in 2:length(str2)){
type2<-find.type(str2[i])
if(type2==type) string.split[j]<-paste(string.split[j],str2[i],sep="")
else{
j<-j+1
type<-type2
string.split<-c(string.split,str2[i])
}
}
string.split
}
直接跑
split.string("中国123abc")
就好了
如果要区分更多的东西,就改一下内部的find.type()函数。我现在写的只能区分字母、数字和其他东西(比如标点和中文就分不开了)。