我需要在数字和字母之间插入一个标签:
示例输入: 44World Cup
输出: 44 World Cup
我遇到的问题是,我还需要指定数字旁边的单词的长度。
例如:如果单词为th
或TH
,或者数字旁边的字母或单词的长度等于2,我不想插入空格。
示例:我住在44th Avenue
不会受到影响,但是,我居住的44Avenue将改为。我住在44 Avenue
。
到目前为止,我所拥有的只是这个正则表达式,接近但不是很有效:
public string AddSpace(string input)
{
return Regex.Replace(input,
"(?<=[0-9])(?=[A-Za-z])|(?<=[A-Za-z])(?=[0-9])", " ");
}
上面的代码在任意数字/单词序列之间插入一个标签。
答案 0 :(得分:1)
您的问题没有简单的解决方案。因为在很多情况下你会将字母和数字放在一起,例如“1st”,“2nd”,“3rd”等等。
唯一的方法是查找每一个案例并将其作为一个单词加以威胁。
答案 1 :(得分:0)
您可以创建一个Dictionary<int,string>
对象来映射带有允许后缀的数字。例如,(1,“st”),(2,“nd”),(3,“rd”)等。
现在,每当您在字符串中遇到一组数字时,请取最后一位数字和该数字后面的前两个字符,并检查字典以确定是否应插入空格/制表符。
这是一个复杂的逻辑,在我看来无法通过正则表达式完成。