仅使用正则表达式在字符串中查找中间字符
Posted
技术标签:
【中文标题】仅使用正则表达式在字符串中查找中间字符【英文标题】:finding middle character in string using regex only 【发布时间】:2013-06-23 04:29:59 【问题描述】:如何仅使用正则表达式找到中间字符
例如,这显示了预期的输出
Hello
-> l
world
-> r
merged
-> rg
(偶数次见此)
hi
-> hi
I
-> I
我试过了
(?<=\w+).(?=\w+)
【问题讨论】:
我很好奇你为什么要为此使用 RegEx 的开销。 @BLaZuRE 学习正则表达式 @NAMO 这不是学习正则表达式的好方法。了解如何在需要它们的情况下使用它们。 @NAMO 你可以在这里阅读正则表达式regular-expressions.info/wordboundaries.html 正则表达式并不能解决所有问题。一般来说,他们非常不擅长解决需要数数或记住数字的问题。 【参考方案1】:正则表达式不能以您正在寻找的方式计算。这看起来像是正则表达式无法完成的事情。我建议编写代码来解决这个问题。
【讨论】:
+1 - 到目前为止,这是唯一真正回答问题的答案。 OP 特别想使用正则表达式来做到这一点......以了解正则表达式的限制。【参考方案2】:String str="Hello";
String mid="";
int len = str.length();
if(len%2==1)
mid= Character.toString(str.getCharAt(len/2));
else
mid= Character.toString(str.getChatAt(len/2))+ Character.toStringstr.getCharAt((len/2)-1));
这应该可行。
【讨论】:
一起添加到字符不会导致串联(即使以相反的顺序)。无论如何,OP 只需要正则表达式。【参考方案3】:public static void main(String[] args)
String s = "jogijogi";
int size = s.length() / 2;
String temp = "";
if (s.length() % 2 == 0)
temp = s.substring(size - 1, (s.length() - size) + 1);
else if (s.length() % 2 != 0)
temp = s.substring(size, (s.length() - size));
else
temp = s.substring(1);
System.out.println(temp);
【讨论】:
不回答这个问题......特别是如果你考虑到他提出这个问题的 OP 陈述的原因。以上是关于仅使用正则表达式在字符串中查找中间字符的主要内容,如果未能解决你的问题,请参考以下文章