0

そのため、データをカスタムファイルに保存したい航空アプリケーションがあります。以下は私のコードです。私の質問は、このコードは、ユーザーがファイル名に「.bar」を入力していないかどうかを確認しており、入力していない場合は、プログラムがファイル名の末尾に追加します。

私の質問は、ユーザーが「newFile.foo」と入力すると、ファイルが「newFile.foo.bar」として保存されるということです。ユーザーが拡張子を入力できないようにするか、アプリケーションで「.foo」部分を削除するか、または目的の結果を達成するその他のオプションを削除するにはどうすればよいですか。

ありがとう。

var file:File = File.desktopDirectory
file.browseForSave("Save");// Create a <projectStrings /> node
var projectStrings:XML = new XML(<projectStrings />);
// Create a <strings /> node
var strings:XML = new XML(<strings />);
strings.@stringOne = "Hello";
strings.@stringTwo = "World";
// Add the <strings> node to the <projectStrings> node.
projectStrings.appendChild(strings);

var saveFile:File = File(e.target);
var directory:String = saveFile.url;
if (directory.indexOf(".ugags") == -1) {
    trace("WRONG");
    directory += ".ugags";
}
var file:File = new File(directory);
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.WRITE);
fileStream.writeUTFBytes(projectStrings);
fileStream.close();
4

2 に答える 2

2

lastIndexOf String のメソッドを使用して、次のようにファイルの拡張子を検出できます。

var nameStart:int = Math.max(fileName.lastIndexOf("/"), fileName.lastIndexOf("\"));
var extStart:int = fileName.lastIndexOf(".");
if (ext <= nameStart)
{
  //no extention at all
  fileName += ".foo";
}
else
{
  if (fileName.substr(extStart) != ".foo")
  {
    //user given other extension
  }
}
于 2012-04-28T07:32:30.650 に答える
0

手の込んだ正規表現を使用すると、これをより簡潔に行うことができます。ただし、「。」で分割することはできます。次に、要件に合わせて部品を再組み立てします。

var fileParts:Array = directory.split('.');
var lastIndex:int = fileParts.length - 1;
var lastPart:String = fileParts[lastIndex];
// reassmble the initial parts
directory = "";
for (var i:int = 0; i < lastIndex; i++)
{
    if (i != 0)
        directory = directory + "_" + fileParts[i];
    else
        directory = fileParts[0];
}

if (lastPart == "ugags")
    directory += ".ugags";
else
    directory = directory + "_" + lastPart + ".ugags";
于 2012-04-28T08:36:52.853 に答える