[英]Regular expression to split string and number
我知道您要求使用Split
方法,但作為替代方法,您可以使用命名捕獲組:
var numAlpha = new Regex("(?<Alpha>[a-zA-Z]*)(?<Numeric>[0-9]*)");
var match = numAlpha.Match("codename123");
var alpha = match.Groups["Alpha"].Value;
var num = match.Groups["Numeric"].Value;
splitArray = Regex.Split("codename123", @"(?<=\p{L})(?=\p{N})");
將在Unicode字母和Unicode數字之間分割。
如果你的字符串總是那種形式,那么正則表達式對此有點沉重。 你可以用
"codename123".IndexOfAny(new char[] {'1','2','3','4','5','6','7','8','9','0'})
以及對Substring的兩次調用。
有點冗長,但是
Regex.Split( "codename123", @"(?<=[a-zA-Z])(?=\d)" );
你能更具體地了解你的要求嗎? 也許還有一些其他的輸入例子。
IMO,找到比賽會更容易,比如:
Regex.Matches("codename123", @"[a-zA-Z]+|\d+")
.Cast<Match>()
.Select(m => m.Value)
.ToArray();
而不是使用Regex.Split
。
另一種更簡單的方法是
string originalstring = "codename123";
string alphabets = string.empty;
string numbers = string.empty;
foreach (char item in mainstring)
{
if (Char.IsLetter(item))
alphabets += item;
if (Char.IsNumber(item))
numbers += item;
}
好吧,只是一行: Regex.Split("codename123", "^([az]+)");
這段代碼是用java / logic編寫的,應該在別處相同
public String splitStringAndNumber(String string) {
String pattern = "(?<Alpha>[a-zA-Z]*)(?<Numeric>[0-9]*)";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(string);
if (m.find()) {
return (m.group(1) + " " + m.group(2));
}
return "";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.