根据字符和字符长度在特定字符之间插入制表符或空格

时间:2014-05-08 06:43:04

标签: c#

我需要在数字和字母之间插入一个标签:

示例输入: 44World Cup 输出: 44 World Cup 我遇到的问题是,我还需要指定数字旁边的单词的长度。

例如:如果单词为thTH,或者数字旁边的字母或单词的长度等于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])", " ");
}

上面的代码在任意数字/单词序列之间插入一个标签。

2 个答案:

答案 0 :(得分:1)

您的问题没有简单的解决方案。因为在很多情况下你会将字母和数字放在一起,例如“1st”,“2nd”,“3rd”等等。

唯一的方法是查找每一个案例并将其作为一个单词加以威胁。

答案 1 :(得分:0)

您可以创建一个Dictionary<int,string>对象来映射带有允许后缀的数字。例如,(1,“st”),(2,“nd”),(3,“rd”)等。

现在,每当您在字符串中遇到一组数字时,请取最后一位数字和该数字后面的前两个字符,并检查字典以确定是否应插入空格/制表符。

这是一个复杂的逻辑,在我看来无法通过正则表达式完成。