C#,从字符串中选择某些部分

C#, selecting certain parts from string

在我的示例中,我有一个字符串:"POINT (6.5976512883340064 53.011505757047068)"

我想要的是从该字符串中提取两个双打并将它们放在单独的字符串中。

我可以使用 StringReader,但是双打的长度不固定(也就是长度可能会有所不同)所以我无法说明从哪个位置开始选择。

我想说的是第一次选择在“(”之后和白色space之前,第二次选择在白色space之后和之前“)”。字符串的其余部分可以忽略。

有什么建议吗?

您可以使用以下代码:

var str = "POINT (6.5976512883340064 53.011505757047068)";
var nums = Regex.Replace(a, @"POINT\s*\(([^)]+)\)", "").Split(' ');
var x = nums[0];
var y = nums[1];
var point = "POINT (6.5976512883340064 53.011505757047068)";

var indexOfFirstBrace = point.IndexOf('(') + 1;
var indexOfLastBrace = point.IndexOf(')');
var coordinates = point.Substring(indexOfFirstBrace, indexOfLastBrace - indexOfFirstBrace).Split(' ');

var xCoordinate = coordinates[0];
var yCoordinate = coordinates[1];
    void GetDoubles() 
    {
        string valuesWithoutBrackets = ExtractStringBetweenBrackets("POINT (6.5976512883340064 53.011505757047068)");
        string[] values = valuesWithoutBrackets.Split(" ".ToCharArray());

        //values[0] = "6.5976512883340064"
        //values[1] = "53.011505757047068"
    }

    string ExtractStringBetweenBrackets(string s)
    {
        // You should check for errors in real-world code, omitted for brevity
        var startTag = "(";
        int startIndex = s.IndexOf(startTag) + startTag.Length;
        int endIndex = s.IndexOf(")", startIndex);
        return s.Substring(startIndex, endIndex - startIndex);
    }