我有一个解析问题。我有一个段落,其中包含: word
个实例。所以基本上它有一个冒号,两个空格,一个单词(可以是任何东西),然后是两个空格。
所以,当我有这些实例时,我想转换字符串,所以我有
:
之后的新行字符和单词。 不知道到底该怎么做。我正在使用C#来做到这一点。上面的要点2是我很难做到的。
谢谢
答案 0 :(得分:3)
假设您的原始字符串完全符合您所描述的格式,则可以:
var newString = myString.Trim().Replace(" ", "\n");
Trim()
删除前导和尾随空格,处理字符串末尾的空格。
然后,Replace
替换剩余的" "
两个空格字符,并添加"\n"
个换行符。
结果已分配给newString
变量。这是必需的,因为myString
不会改变 - 因为.NET中的字符串是immutable。
我建议您阅读String
类及其所有方法和属性。
答案 1 :(得分:2)
使用RegularExpressions可以为您提供所需内容的完全匹配。
正则表达式匹配冒号,两个空格,一个单词,然后两个空格是:
Dim reg as New Regex(": [a-zA-Z]* ")
[a-zA-Z]
将查找字母范围内的任何字符。如果您接受单词中的数字,也可以附加0-9
。之后的*
表示可以有前面值的0个或更多个实例。
[a-zA-Z]*
将尝试对任何一组连续的字母字符进行完全匹配。
进一步阅读后,如果您正在寻找,可以使用[\w]
代替[a-zA-Z0-9]
。这将匹配任何“单词”字符。
来源:http://msdn.microsoft.com/en-us/library/ms972966.aspx
您可以使用reg.Matches(inputString)
检索所有匹配项。
有关正则表达式替换的更多信息以及您的选项,请查看http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.replace.aspx
编辑:在我使用\s
搜索空格之前。这将匹配任何空格字符,包括制表符,新行和其他。这不是我们想要的,所以我将它还原为搜索确切的空格字符。
答案 2 :(得分:2)
你可以尝试
var str = ": first : second ";
var result = Regex.Replace(str, ":\\s{2}(?<word>[a-zA-Z0-9]+)\\s{2}",
":\n${word}\n");
答案 3 :(得分:1)
您可以使用string.TrimEnd - http://msdn.microsoft.com/en-us/library/system.string.trimend.aspx - 修剪字符串末尾的空格。
答案 4 :(得分:1)
以下是使用正则表达式的示例。有关详细信息,另请参阅this question。
模式字符串基本上告诉正则表达式查找冒号后跟两个空格。然后我们保存在一个名为“word”的捕获组中,无论该字被两侧的两个空格包围。最后指定了两个空格来完成模式。
替换使用一个lambda,它表示每次匹配,用冒号,换行符,“孤独”一词和另一个换行符替换它。
string Paragraph = "Jackdaws love my big sphinx of quartz: fizz The quick onyx goblin jumps over the lazy dwarf. Where: buzz The crazy dogs.";
string Pattern = @": (?<word>\S*) ";
string Result = Regex.Replace(Paragraph, Pattern, m =>
{
var LoneWord = m.Groups[1].Value;
return @":" + Environment.NewLine + LoneWord + Environment.NewLine;
},
RegexOptions.IgnoreCase);
<强>输入强>
Jackdaws love my big sphinx of quartz: fizz The quick onyx goblin jumps over the lazy dwarf. Where: buzz The crazy dogs.
<强>输出强>
Jackdaws love my big sphinx of quartz:
fizz
The quick onyx goblin jumps over the lazy dwarf. Where:
buzz
The quick brown fox.
注意,对于列表中的第3项,如果您还想用换行符替换两个空格的单个实例,则可以执行以下操作:
Result = Result.Replace(" ", Environment.NewLine);