0

文字列に不明な数の「_」が含まれる文字列の最後のアンダースコアの後の最初の文字を抽出しようとしていますが、プロセスの別のステップで追加したため、私の場合は常に1つになります。

私が試したのはこれです。また、名前から正規表現を抽出しようとしましたが、結果は空でした。

var s = "XXXX-XXXX_XX_DigitalF.pdf"

var string = match(/[^_]*$/)[1]

string.charAt(0) 

したがって、最終的に望ましい結果は「D」です。正規表現で最後の「_」の背後にあるものしか取得できない場合は、現在表示されているようにcharAtを使用できることがわかっているので問題ありません。ただし、正規表現ですべてを実行できる場合は、さらに優れています。

4

1 に答える 1

2

常に少なくとも1つのアンダースコアがあることがわかっている場合は、次のようにすることができます。

var s = "XXXX-XXXX_XX_DigitalF.pdf"

var firstCharAfterUnderscore = s.charAt(s.lastIndexOf("_") + 1);

// OR, with regex

var firstCharAfterUnderscore = s.match(/_([^_])[^_]*$/)[1]

正規表現を使用すると、括弧を使用して一致のその部分をキャプチャすることにより、1文字だけを抽出できます。.lastIndexOf()でも、そのバージョンの方が読みやすいと思います。

いずれにせよ、入力にアンダースコアがない可能性がある場合は、ロジックを追加する必要があります。

于 2012-08-24T22:22:09.450 に答える