function toHebon(s) {
        var hebon = '';
        var lastHebon = '';
        var lastChar = '';
        var i = 0;
        while (i < s.length) {
            var hr = getHebon(s, i);
            if (hr.c == 'っ') {
                // 'っち'
                var nextHr = getHebon(s, i + 1);
                if (nextHr.h != null) {
                    if (nextHr.h.indexOf('CH') == 0) {
                        hr.h = 'T';
                    }
                    else {
                        hr.h = nextHr.h.substring(0, 1);
                    }
                }
            }
            else if (hr.c == 'ん') {
                // B,M,P の前の 'ん' は 'M' とする。
                var nextHr = getHebon(s, i + 1);
                if (nextHr.h != null && 'BMP'.indexOf(nextHr.h.charAt(0)) != -1) {
                    hr.h = 'M';
                }
                else {
                    hr.h = 'N';
                }
            }
            else if (hr.c == 'ー') {
                // 長音は無視
                hr.h = '';
            }
            if (hr.h != null) {
                // 変換できる文字の場合
                if (lastHebon != null) {
                    // 連続する母音の除去
                    var htest = lastHebon + hr.h;
                    if (htest.length > 2) {
                        htest = htest.substring(htest.length - 2);
                    }
                    if (aaSet[htest]) {
                        hr.h = '';
                    }
                }
                hebon += hr.h;
            }
            else {
                // 変換できない文字の場合
                hebon += hr.c;
            }
            lastHebon = hr.h;
            lastChar = hr.c;
            i += hr.c.length;
        }
        return hebon;
    }
function toHebon(s) {
        var hebon = '';
        var lastHebon = '';
        var lastChar = '';
        var i = 0;
        while (i < s.length) {
            var hr = getHebon(s, i);
            if (hr.c == 'っ') {
                
                var nextHr = getHebon(s, i + 1);
                if (nextHr.h != null) {
                    if (nextHr.h.indexOf('CH') == 0) {
                        hr.h = 'T';
                    }
                    else {
                        hr.h = nextHr.h.substring(0, 1);
                    }
                }
            }
            else if (hr.c == 'ん') {
                
                var nextHr = getHebon(s, i + 1);
                if (nextHr.h != null && 'BMP'.indexOf(nextHr.h.charAt(0)) != -1) {
                    hr.h = 'M';
                }
                else {
                    hr.h = 'N';
                }
            }
            else if (hr.c == 'ー') {
                
                hr.h = '';
            }
            if (hr.h != null) {
                
                if (lastHebon != null) {
                    
                    var htest = lastHebon + hr.h;
                    if (htest.length > 2) {
                        htest = htest.substring(htest.length - 2);
                    }
                    if (aaSet[htest]) {
                        hr.h = '';
                    }
                }
                hebon += hr.h;
            }
            else {
                
                hebon += hr.c;
            }
            lastHebon = hr.h;
            lastChar = hr.c;
            i += hr.c.length;
        }
        return hebon;
    }
function toHebon ( s ) { var hebon = '' ; var lastHebon = '' ; var lastChar = '' ; var i = 0 ; while ( i < s . length ) { var hr = getHebon ( s , i ) ; if ( hr . c == 'っ')  { // 'っち' var nextHr = getHebon ( s , i + 1 ) ; if ( nextHr . h != null ) { if ( nextHr . h . indexOf ( 'CH' ) == 0 ) { hr . h = 'T' ; } else { hr . h = nextHr . h . substring ( 0 , 1 ) ; } } } else if ( hr . c == 'ん')  { // B,M,P の前の 'ん' は 'M' とする。 var nextHr = getHebon ( s , i + 1 ) ; if ( nextHr . h != null && 'BMP' . indexOf ( nextHr . h . charAt ( 0 ) ) != - 1 ) { hr . h = 'M' ; } else { hr . h = 'N' ; } } else if ( hr . c == 'ー')  { // 長音は無視 hr . h = '' ; } if ( hr . h != null ) { // 変換できる文字の場合 if ( lastHebon != null ) { // 連続する母音の除去 var htest = lastHebon + hr . h ; if ( htest . length > 2 ) { htest = htest . substring ( htest . length - 2 ) ; } if ( aaSet [ htest ] ) { hr . h = '' ; } } hebon += hr . h ; } else { // 変換できない文字の場合 hebon += hr . c ; } lastHebon = hr . h ; lastChar = hr . c ; i += hr . c . length ; } return hebon ; }
全角ひらがなをヘボン式ローマ字で半角英文字に変換します。
全角ひらがなをヘボン式ローマ字で半角英文字に変換します。