3

入力フレーズ内の二重引用句をすべて抽出し、一致しない要素を単語として保持したい

「営業担当者」のITがあり、出力を次のようにしたいとします。

sales people

  IT

input = "SO \" sales manager \ "marketing \" management\""についても同じです

出力は次のとおりです。

SO
sales manager
marketing
management

「SO」「セールスマネージャー」「マーケティング管理」「保険」と入力した場合

出力は次のとおりです。

SO
sales manager
marketing
management
insurance

正規表現を見つけました:しかし、抽出する方法がわかりません:

string InputText="SO \"sales manager\" marketing \"management\"" ;
string pattern0 = "^\"(.*?)\"$";
string pattern = "^(.*?)\"(.*?)\"(.*?)$";
Regex regex = new Regex(pattern);
string[] temOperands;
bool isMatch = regex.IsMatch(InputText);
if (isMatch)
{
    //here goes the extraction
}
4

4 に答える 4

4

のようなものが必要だと思います"(?<word>[^"]+)"|(?<word>\w+)。これは、二重引用符で囲まれたテキストと1つの単語の両方に一致します。

var str = @"SO ""sales manager"" marketing hello ""management""";
var regex = new Regex(@"""(?<word>[^""]+)""|(?<word>\w+)");
var words = regex.Matches(str)
    .Cast<Match>()
    .Select(m => m.Groups["word"].Value)
    .ToArray();

テスト文字列の場合、これは次を返します。

SO
sales manager
marketing
hello
management
于 2012-04-09T13:27:30.727 に答える
0

入力文字列には、二重引用符「Salesmanager」と「marketing」内の2つの単語のみが含まれます。以下のコードは、二重引用符で囲まれた文字列を抽出できます。

        ArrayList arr = new ArrayList();

        int x1 ;
        int nextPos=0;
        x1 = InputText.IndexOf('\"', 0) +1 ;
        while (x1 != -1)
        {
            if (x1 >= 0)
            { 
                nextPos = InputText.IndexOf('\"',x1);
                arr.Add(InputText.Substring(x1, nextPos - x1));
            }
            nextPos++;
            x1 = InputText.IndexOf('\"', nextPos) + 1;
        }
于 2012-04-09T13:26:15.950 に答える
-1

'replace'を使用できます

string InputText="SO \"sales manager\" marketing \"management\"" ;
InputText=InputText.Replace("\"","\n");

出力には、必要なものが含まれます。

于 2012-04-09T12:43:07.070 に答える
-1

分割機能も使用できます

string s="SO \"sales manager\" marketing \"management\"";
string[] ExtractedString= Regex.Split(s, "\"");
于 2012-04-09T12:55:22.807 に答える