我有一个字符串:提取一些数字和小数从字符串
" a.1.2.3 #4567 "
,我想,以减少只是“1.2.3”。
当前正在使用Substring()和Remove(),但是如果在井号后面有更多数字,则会中断。
要做到这一点,最好的方法是什么?我已经阅读了正则表达式& string.split上的一堆问题,但我无法获得任何我尝试在VB.net中工作的内容。我需要做一场比赛,然后用比赛结果来替换吗?
任何帮助将不胜感激。
我有一个字符串:提取一些数字和小数从字符串
" a.1.2.3 #4567 "
,我想,以减少只是“1.2.3”。
当前正在使用Substring()和Remove(),但是如果在井号后面有更多数字,则会中断。
要做到这一点,最好的方法是什么?我已经阅读了正则表达式& string.split上的一堆问题,但我无法获得任何我尝试在VB.net中工作的内容。我需要做一场比赛,然后用比赛结果来替换吗?
任何帮助将不胜感激。
这应该工作:
string input = " a.1.2.3 #4567 ";
int poundIndex = input.IndexOf("#");
if(poundIndex >= 0)
{
string relevantPart = input.Substring(0, poundIndex).Trim();
IEnumerable<Char> numPart = relevantPart.SkipWhile(c => !Char.IsDigit(c));
string result = new string(numPart.ToArray());
}
+1因为演示比特很棒(代码也很好):) – varocarbas
很好用。再次感谢您花时间写出来。 – ronald
如果英镑符号是最相关的位,靠Split
。示例VB.NET代码:
Dim inputString As String = " a.1.2.3 #4567 "
If (inputString.Contains("#")) Then
Dim firstBit As String = inputString.Split("#")(0).Trim()
Dim headingToRemove As String = "a."
Dim result As String = firstBit.Substring(headingToRemove.Length, firstBit.Length - headingToRemove.Length)
End If
至于这是一个多语言的问题,来这里的翻译到C#:
string inputString = " a.1.2.3 #4567 ";
if (inputString.Contains("#"))
{
string firstBit = inputString.Split('#')[0].Trim();
string headingToRemove = "a.";
string result = firstBit.Substring(headingToRemove.Length, firstBit.Length - headingToRemove.Length);
}
尝试......
String[] splited = split("#");
String output = splited[0].subString(2); // 1 is the index of the "." after "a" considering there are no blank spaces before it..
这是正则表达方式
string input = " a.1.2.3 #4567 ";
Regex regex = new Regex(@"(\d\.)+\d");
var match = regex.Match(input);
if(match.Success)
{
string output = match.Groups[0].Value;//"1.2.3"
//Or
string output = match.Value;//"1.2.3"
}
或只是'match.Value'。 –
@ m.buettner是啊很好赶上 –
你的解决方案也很好,谢谢。不知道最好的是什么,所以我标记了我尝试接受的第一个。如果你们觉得应该挑选更好的选择,让我知道。 – ronald
您能否请包括一个解释,帮助我们了解什么原因“1.2.3”是原始字符串的正确输出? – Tormod
你到底做了什么?使用正则表达式将'number.number.number'取出该字符串似乎不太难? – stijn
@Tormod该字符串中的字母数字都不是文字,它可以是“z.4.4.4#666”。我试图从原始字符串得到的是d \。\ d \。\ d。不知道这是否回答你的问题,这里很晚。 – ronald