字符串操作 -- 最简单的方法 C#
本文关键字:方法 最简单 操作 字符串 | 更新日期: 2023-09-27 17:56:18
实现以下方案的最佳方法是什么
string sample = "Mountain View XX,Lake"
我期待 2 种情况作为 o/p
山景城湖
我可以通过sample.split[','][1]
得到湖
我获得Mountain View ignoring XX
的最佳方式是什么
我尝试使用多个拆分并将它们与 lastIndex 连接起来!!
那么还有其他更简单的方法吗?
string.Substring
方法工作正常:
sample = sample.Substring(0, sample.IndexOf(","));
对于示例,还有直到子字符串的最后一个货币为止获取的string.LastIndexOf
:
sample = sample.Substring(0, sample.LastIndexOf(","));
在您的示例中,两者将同时工作,因为只有一个,
字符。
之后,您可以删除直到最后一个空格字符。
sample = sample.Substring(0, sample.LastIndexOf(" "));
使用 String.Replace
sample= sample.Replace("XX", "");
尝试使用正则表达式。(''w+''s+?''w+)''s+?XX'',(''w+)http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.aspx组 1 包含Lake
组 2 包含string.Split()
你说你尝试过多次拆分。您可以在单个分隔符中指定多个分隔符XX
:
var parts
= sample.Split(new[] { "XX", "," }, StringSplitOptions.RemoveEmptyEntries);
现在你有两个部分:
var part1 = parts[0]; // Mountain View
var part2 = parts[1]; // Lake
目前尚不清楚为什么要删除字符串的确切部分,但这里有一些不同的方法来删除该确切的字符串:
string sample = "Mountain View XX,Lake"
// option 1
string removed = sample.Remove(14, 3);
// option 2
string replaced = sample.Replace("XX,", String.Empty);
// option 3
string[] parts = sample.Split(',');
parts[0] = parts[0].Substring(0, 14);
string concatenated = String.Concat(parts);
如果字符串的CC_10部分确实是其他内容,例如街道号码,那么您将需要一些东西来确定要删除多少字符串。以下是一些示例:
string sample = "Mountain View 123,Lake"
// option 1; remove digits followed by a comma
string replaced = Regex.Replace(sample, "'d+,", String.Empty);
// option 2; remove what's after the last space in the part before the comma
string[] parts = sample.Split(',');
parts[0] = parts[0].Substring(0, parts[0].LastIndexOf(" ") + 1);
string concatenated = String.Concat(parts);
你漏掉了很多。 XX 总是字面上的 XX 吗? 您是否保证确切的格式或信任用户输入? 如果你知道你想要所有的开头字符,直到你点击一个双大写字母组合,你可以做一个非常简单的正则表达式。 我必须查找它,因为我使用这些已经有好几年了,但它会非常简单。
这确实可以解决问题。 它确实包括两个 XX 之前的空间。 我假设XX可以是任何大写字母。
Regex reg;
reg = new Regex(".{1,}(?=[A-Z]{2})");
var output = reg.Match("Mountain View XX, Lake");
string text = output.Value;
您可以在此处进行测试:http://www.regexplanet.com/advanced/dotnet/index.html并在此处了解有关正则表达式的更多信息:http://www.regular-expressions.info/tutorial.html
我建议你选择:
string sample = "Mountain View XX,Lake";
Console.WriteLine(sample.Split(',')[1]);// Lake
Console.WriteLine(sample.Remove(sample.IndexOf("XX,")).Trim()); // Mountain View
演示:http://ideone.com/RizzzC
我可能会做这样的事情:
public static string[] MyCustomSplit(string input, List<string> reservedWords)
{
List<string> outputLines = new List<string>();
string[] lines = input.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string line in lines)
{
if (!string.IsNullOrWhiteSpace(line))
{
string[] parts = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
List<string> lineParts = new List<string>();
foreach (string part in parts)
{
if (!reservedWords.Contains(part))
{
lineParts.Add(part);
}
}
outputLines.Add(string.Join(" ", lineParts.ToArray()));
}
}
return outputLines.ToArray();
}
然后
string sample = "Mountain View XX,Lake";
List<string> reservedWords = new List<string>() { "XX" };
string[] test = MyCustomSplit(sample, reservedWords);
结果是:
string[0] = Mountain View
string[1] = Lake
或者像这样:
public static string[] MyCustomSplitAndCleanup(string input)
{
List<string> outputLines = new List<string>();
string[] lines = input.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string line in lines)
{
if (!string.IsNullOrWhiteSpace(line))
{
string[] parts = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
List<string> lineParts = new List<string>();
for (int index = 0; index < parts.Length; index++ )
{
string part = parts[index];
int numericValue = 0;
bool validPart = true;
if (int.TryParse(part, out numericValue))
{
if (index == 0 || index == parts.Length - 1)
{
validPart = false;
}
}
if (validPart)
{
lineParts.Add(part);
}
}
outputLines.Add(string.Join(" ", lineParts.ToArray()));
}
}
return outputLines.ToArray();
}
它涵盖了这个:
string sample1 = "Mountain View 32,Lake";
string sample2 = "17 Park place,Something";
string[] test1 = MyCustomSplitAndCleanup(sample1);
string[] test2 = MyCustomSplitAndCleanup(sample2);