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

时间:2015-05-04 12:48:45

标签: c# string select double stringreader

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

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

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

我想要的是说第一个选择是在"("和空格之前,第二个选择是在空格之后和#34之前)之后进行的。 &#34 ;.字符串的其余部分可以忽略。

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

您可以使用以下代码:

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

答案 1 :(得分: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);
    }

答案 2 :(得分:0)

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];