文字の検索をするには?

[上に] [前に] [次に]
xxx [E-Mail] 1999/08/18(水) 20:30:14
1行テキストフィールドに文字列(ファイル名)を入力してもらいボタ
ンをクリックすると文字列のなかに"."があるかを確認したいのです。
この処理を以下のような関数にしたのですが"."があってもなくてもア
ラートに表示されるのは"0"になってしまいます。
(予定では"."がある場合は拡張子が表示され、無い場合は"-1"が表示
されるはずだった)
環境はIE4.0とNC4.6です。(OSはNT4.0SP3)
何がいけないのでしょうか?

function SelectFile(){
var FileName = document.forms[0].test.value;
var Type = ".";
var SearchFileName = ImportFile.search(Type);
var FileType
if( SearchFileName > 0 ){
FileType = ImportFile.split(Type);
alert( FileType[1] );
}
else{
alert(SearchFileName);
}
}

きふね 1999/08/18(水) 23:01:53
function SelectFile(){
var FileName = document.forms[0].test.value;
var SearchFileName = FileName.search(/.+\..+/);
if (SearchFileName != -1) {
File = new Array();
FileType = FileName.split('.');
alert('拡張子は' + FileType[1]);
} else { alert(SearchFileName); }
}
でどうでしょうか。
.はあるがファイル名や拡張子が無いという場合も-1を
表示するようにしています。
正規表現のところはもうちょっといじった方がいいと思います。
JavaScriptはあまりさわったことがないです・・・。

toshi [E-Mail] [HomePage] 1999/08/18(水) 23:23:00
3行目のImportFileは多分FileNameの間違いだと思います。
それとxxxさんのスクリプトでは"."が2つ以上あると対処できません。
とりあえず作成してみました。(Win98+IE5 で確認)

function selectfile(){
filename = document.forms[0].test.value;
type=".";

len=filename.length;
place=filename.lastIndexOf(type,len);

if(place>=0){
filetype=filename.substring(place+1,len)
alert(filetype);
}else{
alert(place);
}
}

toshi 1999/08/18(水) 23:24:45
先に書きこまれてしまいました。>きふねさん

xxx 1999/08/19(木) 11:44:43
[[解決]]
きふねさんtoshiさんありがとうございました。
二人の例を参考に以下のように変更しました。

function SelectImport(){
var FileName = document.forms[0].test.value;
var Type=".";

var Len = FileName.length;
var Place = FileName.indexOf(Type,0);
var LastPlace=FileName.lastIndexOf(Type,Len-1);

if( Place > 0 && Place < Len-1 && Place == LastPlace){
var FileType = FileName.split('.');
alert( FileType[1]);
}else{
alert( "Place=" + Place + ", LastPlace=" + LastPlace );
}
}

[上に] [前に] [次に]