Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
349 views
in Technique[技术] by (71.8m points)

c# - How to split string with Regex.Split and keep all separators?

How to split string with Regex.Split and keep all separators?

I have a string:"substring1 delimeter1 substring2" , where delimeter+substring2 is a part of address.

Also i have 2 and more delimeters: delim1,delim2 wich are equivalent in meaning;

And i want to get string array like this:

arr[0]="subsctring1";
arr[1]="delim1 subsctring2";

or,

arr[1]="delim2 subsctring2;

I have a pattern:

addrArr= Regex.Split(inputText, String.Concat("(?<=",delimeter1, "|",delimeter2, ")"), RegexOptions.None);

But it not works well.

Can you help me to create a valid pattern to to that?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I think you need to use a lookahead, not a lookbehind, for this to work (haven't tried it though).

Also, you have to be careful with the separators; they must be escaped to work correctly as patterns in the regex.

Try this:

addrArr= Regex.Split(inputText, string.Format("(?={0}|{1})", Regex.Escape(delimeter1), Regex.Escape(delimeter2)), RegexOptions.None);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...