Excel-VBA中如何使用split来分割内部含有不定空格的字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel-VBA中如何使用split来分割内部含有不定空格的字符串相关的知识,希望对你有一定的参考价值。
就是让split适用于1个、2个、3个、4个空格
例如一组字符串是“xx yy zz aa"
1、首先打开office excel软件,接着打开VBA编辑界面。
2、然后在单元格区域当中输入一些内容。
3、接着在VBA编辑器中插入模块。
4、在模块当中输入如下代码进行分割取线,然后运行。
5、最后在单元格B2中输入公式“=Division($A1,"/",COLUMN(A:A))”,然后右拉至D2,公式结果如图所示。
参考技术A split语法为:split(要分割的内容,分隔符)根据题意,举例如下:
1、Split(内容," "),即可分割内部还有不定空格的内容
2、分割后为一维数组
3、空个数量不定,可能或产生空元素,需要循环,重新去除非空元素即可。 参考技术B
可以用正则把多个空格变成一个后,在split
dim reg,str as stringstr="a b c d"
set reg=createobject("vbscript.regexp")
reg.pattern="\\s+"
msgbox reg.replace(str," ")
'arr=split(reg.replace(str," ")," ")追问
复制了你的代码,只能将a和b之间的多个空格变为1个,b和c、c和d之间的空格还是那么多
追答dim reg,str as stringstr="a b c d"
set reg=createobject("vbscript.regexp")
reg.pattern="\\s+"
reg.global=true'加上全局匹配应该就可以了。
msgbox reg.replace(str," ")
'arr=split(reg.replace(str," ")," ")本回答被提问者和网友采纳 参考技术C System.out.println("asf1dskf 2 df(3)df".replaceAll("[^\\d]*(\\d)[^\\d]*", "$1\n")); 参考技术D 先用多次的replace把双空格转换成单空格。
c++分割字符串split方法实现
c++标准库中没有实现split函数,但是split字符串又是特别特别常见的常规操作。网络上能找到很多split的实现方式,下面记录一下本人认为比较优雅,可读性也比较好的两种实现方式。
1.使用find方法
如果是比较老的c++版本,可以使用find方法来实现split功能。
void run()
string s = "aa bb cc dd";
const string delim = " ";
int nPos = 0;
vector<string> vec;
nPos = s.find(delim.c_str());
while(-1 != nPos)
string temp = s.substr(0, nPos);
vec.push_back(temp);
s = s.substr(nPos+1);
nPos = s.find(delim.c_str());
vec.push_back(s);
for(string ele: vec)
cout<<ele<<" ";
上面代码的逻辑:
通过find找到分隔符的位置,然后将分割后的元素挨个存入vector中,得到的就是所需要的结果。
2.regex正则匹配
在c++11中引入了regex模块,通过regex模块我们也可以很方便实现split功能。
void run5()
string s = "aa bb cc dd";
regex pattern("\\\\s+");
vector<string> vec(sregex_token_iterator(s.begin(), s.end(), pattern, -1), sregex_token_iterator());
for(auto inner: vec)
cout<<inner<<endl;
上面的代码,也可以顺利实现split功能。而且相比find方法,regex的表达方式更为灵活多变。
以上是关于Excel-VBA中如何使用split来分割内部含有不定空格的字符串的主要内容,如果未能解决你的问题,请参考以下文章