4

これが私が修正しようとしている文字列です: 170-0175-00B -BEARING PLATE MACHINING.asm:2

「 170-0175-00B 」を残しておきたい。したがって、3番目のハイフンとその後にあるものはすべて削除する必要があります。

4

4 に答える 4

4

LINQ はどうですか?

Dim str As String = "170-0175-00B-BEARING PLATE MACHINING.asm:2"
MsgBox(String.Join("-"c, str.Split("-"c).Take(3)))

このアプローチでは、N 番目のハイフンの後に何かを取り出すことができます。ここで、N は簡単に制御できます (const)。

于 2013-01-08T15:38:36.230 に答える
4

迅速な解決策

string test = "170-0175-00B-BEARING PLATE MACHINING.asm:2";
int num = 2;
int index = test.IndexOf('-');
while(index > 0 && num > 0)
{
    index = test.IndexOf('-', index+1);
    num--;
}
if(index > 0)
    test = test.Substring(0, index);

もちろん、最後のハイフンを検索する場合は、より簡単に実行できます

int index = test.LastIndexOf('-');
if(index > 0)
    test = test.Substring(0, index);
于 2012-12-10T20:34:09.393 に答える
2

このような迅速な返信に感謝します。

これが私がたどった道です:

FormatDessinName("170-0175-00B-BEARING PLATE MACHINING.asm:2")


Private Function FormatDessinName(DessinName As String)
    Dim match As Match = Regex.Match(DessinName, "[0-9]{3}-[0-9]{4}-[0-9]{2}[A-Za-z]([0-9]+)?") 'Matches 000-0000-00A(optional numbers after the last letter)
    Dim formattedName As String = ""

    If match.Success Then 'Returns true or false
        formattedName = match.Value 'Returns the actual matched value
    End If

    Return formattedName
End Function

よく働く!

于 2012-12-11T13:15:38.687 に答える
2

このようなもの?

regex.Replace(sourcestring,"^((?:[^-]*-){2}[^-]*).*","$1",RegexOptions.Singleline))

ただし、使用方法によっては、Singleline オプションが必要ない場合があります。

于 2012-12-10T20:35:11.513 に答える