2015-05-04 77 views
0

在我的例子选择某些部分我有一个字符串:"POINT (6.5976512883340064 53.011505757047068)"C#,从字符串

我想什么是从一个字符串中提取两个双打,并放置在单独的字符串。

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

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

有什么建议吗?

+2

如果你告诉我们(code)您会得到更好的反应,少downvotes你已经尝试什么,什么不起作用。 –

+0

你可以使用正则表达式或找到第一个“(”&“下一个空间和比使用String.Substring .. – Cadburry

+0

到目前为止你做的任何事情吗? –

回答

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

试过这个,这正是我需要的,非常感谢! – KDE

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
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); 
    }