我有一个字符串
"cmp197_10_27_147ee7b825-2a3b-4520-b36c-bba08f8b0d87_TempDoc_197"
我想取最后一位数字(即197) 为了获得相同的我已经实现了下面的代码
int lastUnderscore = addUcoid.LastIndexOf('_');
string getucoid = addUcoid.Substring(lastUnderscore).TrimStart('_');
getucoid
字符串正确地得到数字部分。现在的问题是我还要检查数字是否出现在字符串中,即。字符串可以像
"cmp197_10_27_147ee7b825-2a3b-4520-b36c-bba08f8b0d87_TempDoc"
如何对这样的字符串进行检查,无论该部分(197)是否存在于字符串的末尾。
这里197只是一个例子。它可以是任何数字数据,例如196,145等
答案 0 :(得分:2)
string.Contains
无济于事:我们知道它已经存在至少一次了。我会用:
int otherLocation = addUcoid.IndexOf(getucoid);
并将其与lastUnderscore
进行比较。如果otherLocation
非负且小于lastUnderscore
,那么它也处于较早的位置。你也可以使用:
int otherLocation = addUcoid.IndexOf(getucoid, 0, lastUnderscore);
并与-1
进行比较;第二种方法在下划线处停止,因此无法从最后找到实例。
答案 1 :(得分:1)
我认为Regex是最简单的方法。如果match.Success
为真,则找到数字。
Match match = System.Text.RegularExpressions.Regex.Match(addUcoid, @"(?<=_)\d+$");
if(match.Success)
{
int i = int.Parse(match.Value);
}
答案 2 :(得分:0)
当你说“字符串中的结尾”存在时,你的意思是它是否存在于字符串中的任何位置?你可以用.Contains()来获取它。
bool inTheString = addUcoid.Contains(getucoid);
此外:
仅供参考,您的代码:
int lastUnderscore = addUcoid.LastIndexOf('_');
string getucoid = addUcoid.Substring(lastUnderscore).TrimStart('_');
可以简化缩写为:
string getucoid = addUcoid.Split('_').Last();
编辑:
嗯,马克格拉维尔正确地指出,无论如何弦都在那里。如果你想知道是否有另一个字符串实例(除了getucoid):int lastUnderscore = addUcoid.LastIndexOf('_');
string getucoid = addUcoid.Split('_').Last();
bool inTheString = addUcoid.Substring(0,lastUnderscore).Contains(getucoid);
答案 3 :(得分:0)
使用String.EndsWith
方法查找。
http://msdn.microsoft.com/en-us/library/2333wewz%28v=vs.110%29.aspx
string s="cmp197_10_27_147ee7b825-2a3b-4520-b36c-bba08f8b0d87_TempDoc";
bool isends=s.EndsWith("197");//returns false;
s="cmp197_10_27_147ee7b825-2a3b-4520-b36c-bba08f8b0d87_TempDoc_197";
isends=s.EndsWith("197");//returns true;
答案 4 :(得分:0)
可以使用String.Contains()
:http://msdn.microsoft.com/en-us/library/dy85x1sa%28v=vs.110%29.aspx
假设你已经删除了最终的&#34; _197&#34;检查它是否存在后,如果Contains("197")
是子字符串,则在字符串上调用"197"
将返回true,如果不是,则返回false。
答案 5 :(得分:0)
我怀疑你只是想知道这最后一部分是否是数字:
bool isNumeric = Regex.IsMatch(getucoid, @"^\d+$");
答案 6 :(得分:0)
您可以使用LINQ(也检查最后一个字符是否为数字):
string str = "cmp197_10_27_147ee7b825-2a3b-4520-b36c-bba08f8b0d87_TempDoc_197";
if (Char.IsDigit(str.Last()))
{
string digits = new string(str.Reverse().TakeWhile(c => Char.IsDigit(c)).Reverse().ToArray());
}