/**
  * 入力をアーカイブ中で妥当な拡張子を除くファイル名に変換します。
  * @param string $filenameWithoutExtension 拡張子を除くファイル名。
  * @return string 制御文字・空白文字のみで構成されていた場合、ランダムな文字列生成します。
  */
 public function convertToValidFilenameWithoutExtensionInArchives(string $filenameWithoutExtension) : string
 {
     $asciiString = $this->preventWindowsReserved(mb_substr(trim(preg_replace('/[^0-9_a-z]+/u', '-', \Stringy\StaticStringy::dasherize(Transliterator::translateUsingLatinAlphabet(preg_replace('/^\\p{Z}+|\\p{C}+|\\p{Z}+$/u', '', \Normalizer::isNormalized($filenameWithoutExtension) ? $filenameWithoutExtension : \Normalizer::normalize($filenameWithoutExtension))))), '-'), 0, static::MAX_LENGTH));
     return $asciiString === '' ? $this->generateRandomFilename() : $asciiString;
 }
 /**
  * @param string $kanjiAndKanaString
  * @param string $latinAlphabetString
  * @dataProvider stringProvider
  */
 public function testTranslateUsingLatinAlphabet(string $kanjiAndKanaString, string $latinAlphabetString)
 {
     $this->assertSame($latinAlphabetString, Transliterator::translateUsingLatinAlphabet($kanjiAndKanaString));
 }