如何从一个字符串中提取由另一个字符串的最右边6个字符组成的子字符串?
例如:我的字符串是"PER 343573"
。现在我想提取"343573"
。
我该如何做到这一点呢?
string SubString = MyString.Substring(MyString.Length-6);
Right(n);
函数。该函数应处理空或空字符串并返回空字符串,对于长度小于最大长度的字符串应返回原始字符串,对于长度长于最大长度的字符串应返回右侧字符的最大长度。public static string Right(this string sValue, int iMaxLength)
{
//Check if the value is valid
if (string.IsNullOrEmpty(sValue))
{
//Set valid empty string as string could be null
sValue = string.Empty;
}
else if (sValue.Length > iMaxLength)
{
//Make the string no longer than the max length
sValue = sValue.Substring(sValue.Length - iMaxLength, iMaxLength);
}
//Return the string
return sValue;
}
sValue.Length > iMaxLength
那样! - stevehipwell使用扩展方法可能更好:
public static class StringExtensions
{
public static string Right(this string str, int length)
{
return str.Substring(str.Length - length, length);
}
}
用法
string myStr = "PER 343573";
string subStr = myStr.Right(6);
str.Length - length
可能为负数。第二个参数是可选的,不需要传递长度。 - iheartcsharpusing System;
public static class DataTypeExtensions
{
#region Methods
public static string Left(this string str, int length)
{
str = (str ?? string.Empty);
return str.Substring(0, Math.Min(length, str.Length));
}
public static string Right(this string str, int length)
{
str = (str ?? string.Empty);
return (str.Length >= length)
? str.Substring(str.Length - length, length)
: str;
}
#endregion
}
不应该错误,返回空字符串而非null,返回经过修剪的或基础值。使用像 "testx".Left(4) 或 str.Right(12) 这样的方式。
string Result = "PER 343573".Split(" ")[1];
这将始终返回您字符串的第二个单词。
这不完全是您所要求的,但仅查看示例,似乎您正在寻找字符串的数字部分。
如果始终如此,那么使用正则表达式是一个好方法。
var regex= new Regex("\n+");
string numberString = regex.Match(page).Value;
由于您正在使用 .NET,该编译为 MSIL,只需引用 Microsoft.VisualBasic,并使用 Microsoft 内置的 Strings.Right
方法:
using Microsoft.VisualBasic;
...
string input = "PER 343573";
string output = Strings.Right(input, 6);
Microsoft.VisualBasic.FileIO.TextFieldParser
类对于解析.csv文件非常有用,这一点在这个SO线程中有所体现。String text = "PER 343573";
String numbers = text;
if (text.Length > 6)
{
numbers = text.Substring(text.Length - 6);
}
var str = "PER 343573";
var right6 = string.IsNullOrWhiteSpace(str) ? string.Empty
: str.Length < 6 ? str
: str.Substring(str.Length - 6); // "343573"
// alternative
var alt_right6 = new string(str.Reverse().Take(6).Reverse().ToArray()); // "343573"
这个函数支持在str
中输入任意字符。而另一段代码不支持空字符串null
,第一个函数更快,但第二个更加紧凑。
如果知道str
中包含短字符串,则我更喜欢第二种方法。但如果是长字符串,则第一个方法更合适。
例如:
var str = "";
var right6 = string.IsNullOrWhiteSpace(str) ? string.Empty
: str.Length < 6 ? str
: str.Substring(str.Length - 6); // ""
// alternative
var alt_right6 = new string(str.Reverse().Take(6).Reverse().ToArray()); // ""
或者
var str = "123";
var right6 = string.IsNullOrWhiteSpace(str) ? string.Empty
: str.Length < 6 ? str
: str.Substring(str.Length - 6); // "123"
// alternative
var alt_right6 = new string(str.Reverse().Take(6).Reverse().ToArray()); // "123"
string endOfString = Strings.Right(wholeString, 6);
- Alan McBee