如何从字符串中解析出整数和剩余的字符串?

3

我有一些像这样的字符串:

1. abc
2. def
88. ghi

我希望能够从字符串中获取数字并将其放入一个变量中,然后获取剩余的字符串并将其放入另一个变量中。数字始终位于字符串的开头,并且在数字后面有一个句点。有没有一种简单的方法可以将一个字符串解析成数字和字符串两部分?

5个回答

3

可能不是最好的方法,但是可以通过“。”进行拆分(感谢 Kirk)

后面的所有内容都是字符串,前面的所有内容都是数字。


2
+1,但分隔符应为“。 ”(点-空格)。之后相关的函数是int.Parse(string) - Kirk Woll
谁说可能有两个点了? - soandos

2
您可以调用 IndexOfSubstring 方法:
int dot = str.IndexOf(".");
int num = int.Parse(str.Remove(dot).Trim());
string rest = str.Substring(dot).Trim();

非常感谢你。你的解决方案看起来很容易实现。还有一个快速问题。我想将num转换为一个带有前导零的字符串。有没有简单的方法可以做到这一点? - Fusako Hatasaka
@Fusako: .ToString("000000"). 请参见 http://msdn.microsoft.com/zh-cn/library/dwhawy9k.aspx - SLaks

1
        var input = "1. abc";
        var match = Regex.Match(input, @"(?<Number>\d+)\. (?<Text>.*)");
        var number = int.Parse(match.Groups["Number"].Value);
        var text = match.Groups["Text"].Value;

1
不要忘记在第一个点前加反斜杠:(?<Number>\d+)\. (?<Text>.*) - Chris Fulstow
@cxfx - 是的,是个bug。谢谢你指出来。已经更正了答案。 - Alex Aza

0

这应该可以工作:

public void Parse(string input)
{
    string[] parts = input.Split('.');
    int number = int.Parse(parts[0]); // convert the number to int
    string str = parts[1].Trim(); // remove extra whitespace around the remaining string
}

第一行将字符串拆分为一个字符串数组,其中第一个元素将是数字,第二个元素将是字符串的剩余部分。

然后您可以使用 int.Parse 将数字转换为整数。


0
public Tuple<int, string> SplitItem(string item)
{
    var parts = item.Split(new[] { '.' });
    return Tuple.Create(int.Parse(parts[0]), parts[1].Trim());
}

var tokens = SplitItem("1. abc");
int number = tokens.Item1;  // 1
string str = tokens.Item2;  // "abc"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接