1

こんにちは、次のような xaml 文字列があります。

<InlineUIContainer>
  <HyperlinkButton Style="{StaticResource Link}" NavigateUri="someuri">
    <Span>
      <InlineUIContainer>
        <HyperlinkButton Style="{StaticResource Link}" NavigateUri="someuri">SOME TEXT</HyperlinkButton> 
      </InlineUIContainer>
    </Span>
    some undesirable text!
  </HyperlinkButton>
</InlineUIContainer>

この xaml を RichTextBlock コンテンツに変換する必要がありますが、文字列の生成を制御することはできません。文字列を受け取るだけです。フラグメントでわかるように、HyperLinkBut​​ton には 2 つのコンテンツを含めることができないため、望ましくないテキストを削除する必要があります。

したがって、次の2つのいずれかが必要です。

  1. 不要な外側の HyperLinkBut​​ton を削除するか、
  2. サンプル内の望ましくないテキストを削除します

誰かがこれを達成するために正規表現または何かを手伝ってくれますか?

ありがとう!

4

1 に答える 1

0

おそらく最良の解決策ではありませんが、正規表現は多くのエッジケースで簡単につまずく可能性があるためです。この式は、望ましくないテキストを見つけて置き換えます

正規表現:(<\/Span>[\s\r\n]*)(^.*[\r\n]*)(?=\s*<\/HyperlinkButton>[\s\r\n]*<\/InlineUIContainer>)

と置換する:$1

ここに画像の説明を入力

実際の作業例: http://regexr.com?35efl

サンプルテキスト

<InlineUIContainer>
  <HyperlinkButton Style="{StaticResource Link}" NavigateUri="someuri">
    <Span>
      <InlineUIContainer>
        <HyperlinkButton Style="{StaticResource Link}" NavigateUri="someuri">SOME TEXT</HyperlinkButton> 
      </InlineUIContainer>
    </Span>
    some undesirable text!
    with multiple 
    lines
  </HyperlinkButton>
</InlineUIContainer>

交換後

<InlineUIContainer>
  <HyperlinkButton Style="{StaticResource Link}" NavigateUri="someuri">
    <Span>
      <InlineUIContainer>
        <HyperlinkButton Style="{StaticResource Link}" NavigateUri="someuri">SOME TEXT</HyperlinkButton> 
      </InlineUIContainer>
    </Span>
  </HyperlinkButton>
</InlineUIContainer>
于 2013-06-30T20:56:30.667 に答える