C# 在任何第一个数字之前拆分字符串

C# 在任何第一个数字之前拆分字符串,c#,asp.net,string,split,C#,Asp.net,String,Split,我只想获得“波多黎各”。其思想是,它可以是任意数字,而不是123。如何实现这一点?我建议使用正则表达式,这在上下文中非常简单:从字符串的^开头获取所有非数字[^0-9]*字符: string test = " Puerto Rico 123 " ; var str = " Puerto Rico 123 "; var firstDigit = str.FirstOrDefault(c => char.IsDigit(c)); if (firstDigit != default(char

我只想获得
“波多黎各”
。其思想是,它可以是任意数字,而不是
123
。如何实现这一点?

我建议使用正则表达式,这在上下文中非常简单:从字符串的
^
开头获取所有非数字
[^0-9]*
字符:

string test = " Puerto Rico 123 " ;
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));
}
Linq是一个本地人:

string test = " Puerto Rico 123 ";

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

您可以使用这样的正则表达式:

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

您可以按照建议使用正则表达式,但也可以尝试使用此正则表达式:

Match match = Regex.Match("Puerto Rico 123", @"^.*?(?=\d)");
string text = match.Value;

如果字符串中有数字,则返回字符串中第一个数字的值;如果字符串中没有数字,则返回“\0”。然后,我们检查第一个数字是否不是“\0”,如果是,我们从开始到第一个数字出现在字符串中都取初始字符串的子字符串。

如果数字只出现在字符串的末尾,简单修剪即可:

string test = " Puerto Rico 123 " ;
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));
}

string source=“波多黎各123”;

char[]toBeRemoved=“1234567890”.ToCharArray() 您可以像这样使用
Regex

  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

你的意思是
Substring
method?你能提供更多的输入和输出示例吗?似乎您正在修剪空格,但不清楚(或者说它很宽)您使用的是哪种模式来获得结果。是的,使用子字符串方法您可以使用常规表达式。您还可以调用
上的
修剪
来删除前导空格和尾随空格。@Abion47:谢谢!我明白了:因为问题的答案是
“poertorico”
-修剪过的字符串,所以final
.Trim()
很可能是强制性的。如果波多黎各有一个数字,则会失败part@Kees德维特:它不会失败;在案例
“波多黎各123”
中,结果
“波多黎各”
是一种预期行为:“在任何第一个数字之前拆分字符串”。“任何第一个数字前的字符串”是
“Puerto”
,而“第一个数字”是
123
@Kees de Wit:on
“Pu3rto Rico”
结果是
“Pu”
,这与我的预期行为相同answer@Kees你只是编辑了你的答案(顺便说一句,这是错的),然后复制了这个答案。你的目标是什么???我只是将char数组的init替换为你的方法。事实上,我们有相同的答案。如果输入只有一个尾随数字(如问题中的
“波多黎各123”
),这是一个最佳且考虑周全的解决方案;但是,如果一个数字可以出现在中间某个地方(例如<代码>”,波多黎各123,唉!“”,它就不起作用了。这个问题是模糊的,这种解读是可能的(+1),但是,请在你的回答中提到你的愿景。如果波多黎各有一个数字,你就会失败part@KeesdeWit问题是,在任何第一个数字之前拆分字符串,这正是这样做的。不是吗?:)不,这不是问题。这里有一个问题“我只想得到“波多黎各”。这个想法是,它可以是任何数字,而不是123。我如何才能做到这一点?”你看到了关于在第一个数字之前拆分的任何明确信息吗?
Regex MyRegex = new Regex("[^a-z A-Z.]", RegexOptions.IgnoreCase);
string s = MyRegex.Replace(@" Puerto Rico 123 ", @"");
Console.WriteLine(s);