我有一個字符串數組string[] arr
,包含了像N36102W114383
,N36102W114382
等值...
我想將每一個字符串分割使得該值就這樣產生了N36082
和W115080
。分割字符串數組
這樣做的最好方法是什麼?
我有一個字符串數組string[] arr
,包含了像N36102W114383
,N36102W114382
等值...
我想將每一個字符串分割使得該值就這樣產生了N36082
和W115080
。分割字符串數組
這樣做的最好方法是什麼?
原諒我,如果這並不完全編譯,但我只是用手打破和寫入字符串處理函數:
public static IEnumerable<string> Split(string str)
{
char [] chars = str.ToCharArray();
int last = 0;
for(int i = 1; i < chars.Length; i++) {
if(char.IsLetter(chars[i])) {
yield return new string(chars, last, i - last);
last = i;
}
}
yield return new string(chars, last, chars.Length - last);
}
這應該爲你工作。
Regex regexObj = new Regex(@"\w\d+"); # matches a character followed by a sequence of digits
Match matchResults = regexObj.Match(subjectString);
while (matchResults.Success) {
matchResults = matchResults.NextMatch(); #two mathches N36102 and W114383
}
如果你每次有固定的格式,你可以只是這樣做:
string[] split_data = data_string.Insert(data_string.IndexOf("W"), ",")
.Split(",", StringSplitOptions.None);
在這裏,您插入分隔符識別到你的字符串,然後由這個分裂的分隔符它。
使用'Split'和'IsLetter'字符串函數,這在c#中相對簡單。
不要忘了編寫單元測試 - 以下可能有一些角落案例錯誤!
// input has form "N36102W114383, N36102W114382"
// output: "N36102", "W114383", "N36102", "W114382", ...
string[] ParseSequenceString(string input)
{
string[] inputStrings = string.Split(',');
List<string> outputStrings = new List<string>();
foreach (string value in inputstrings) {
List<string> valuesInString = ParseValuesInString(value);
outputStrings.Add(valuesInString);
}
return outputStrings.ToArray();
}
// input has form "N36102W114383"
// output: "N36102", "W114383"
List<string> ParseValuesInString(string inputString)
{
List<string> outputValues = new List<string>();
string currentValue = string.Empty;
foreach (char c in inputString)
{
if (char.IsLetter(c))
{
if (currentValue .Length == 0)
{
currentValue += c;
} else
{
outputValues.Add(currentValue);
currentValue = string.Empty;
}
}
currentValue += c;
}
outputValues.Add(currentValue);
return outputValues;
}
如果使用C#,請嘗試:
String[] code = new Regex("(?:([A-Z][0-9]+))").Split(text).Where(e => e.Length > 0 && e != ",").ToArray();
的情況下,你只想找格式NxxxxxWxxxxx,這會做得很好:
Regex r = new Regex(@"(N[0-9]+)(W[0-9]+)");
Match mc = r.Match(arr[i]);
string N = mc.Groups[1];
string W = mc.Groups[2];
什麼語言?海事組織你不__want__使用正則表達式。 – Kimvais
這樣的事情? (N \ d +)(W \ d +)'或'(N [0-9] +)(W [0-9] +)' – fardjad
你用什麼語言? –