在第一个数字之前拆分字符串

时间:2017-01-18 12:07:00

标签: c# asp.net string

string test = " Puerto Rico 123 " ;

我只想获得"Puerto Rico"。我们的想法是,而不是123,它可以是任何数字。我怎样才能做到这一点?

5 个答案:

答案 0 :(得分:5)

我建议使用正则表达式,这在上下文中非常简单:从字符串的开头Error:(44, 95) java: incompatible types: inference variable T has incompatible bounds equality constraints: MovieTrans lower bounds: java.util.List<MovieTrans> 获取所有非数字[^0-9]*个字符:

^

Linq 是一个提及者:

string test = " Puerto Rico 123 ";

string result = Regex.Match(test, @"^[^0-9]*").Value;

如果你想修剪前导和尾随空格(并且string result = string.Concat(test.TakeWhile(c => c < '0' || c > '9')); 作为答案,而不是"Puerto Rico"),只需添加" Puerto Rico ",例如:

.Trim()

答案 1 :(得分:1)

你可以按照建议使用正则表达式,但你也可以试试这个:

var str = " Puerto Rico 123 ";
var firstDigit = str.FirstOrDefault(c => char.IsDigit(c));

if (firstDigit != default(char))
{
    var substring = str.Substring(0, str.IndexOf(firstDigit));
}

如果有字符串,则返回字符串中第一个数字的值,或者&#39; \ 0&#39;如果你的字符串中没有数字。在那之后,我们检查第一个数字是否是&#39; \ 0&#39;以外的其他数字,如果是这样,我们从头开始直到字符串中数字第一次出现的初始字符串的子字符串。

答案 2 :(得分:1)

简单修剪会做,如果数字只出现在字符串的结尾处:

var result = "Puerto Rico 123".TrimEnd(" 1234567890".ToCharArray());

  string source ="Puerto Rico 123";
  char[] toBeRemoved = " 1234567890".ToCharArray(); <-- note the whitespace...
  string result = source.TrimEnd(toBeRemoved); <-- remove the chars at the end     of the source

答案 3 :(得分:0)

你可以用这样的正则表达式来做到这一点:

Id1        Value_today
abc        500
def        600
ghi        700
jkl        800

答案 4 :(得分:0)

您可以像这样使用Regex

Regex MyRegex = new Regex("[^a-z A-Z.]", RegexOptions.IgnoreCase);
string s = MyRegex.Replace(@" Puerto Rico 123 ", @"");
Console.WriteLine(s);