JS實現全半形轉換和去空格
最近在寫開題報告,發現PDF中的文字複製出來會各種凌亂:標點全半形不定、各種空格莫名其妙的多。太影響複製貼上了。
用js寫了個解決問題的辦法,基本就是用正規表示式替換。為了能方便的加入新標點轉換,做了一下結構上的優化。
<html>
<!-- trim all the spaces in input, and make the punctuations in right case-->
<head>
<meta charset="UTF-8">
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
//bind events
$('#format').click(format);
$('#clear').click(clear);
});
//replace strategy
function Strategy(reg, rep){
this[this.REG] = reg;
this[this.REP] = rep;
}
Strategy.prototype.REG = 0;
Strategy.prototype.REP = 1;
//replace utils
function change(p1, p2, mapping){
return p1 + mapping[p2];
}
function getRegOf(word, mapping){
var str = '';
for (var i in mapping){
str += '\\' + i;
}
return new RegExp('(' + word + ')([' + str + '])', 'g');
}
// DBC to SBC case
function en2cnChange(){
var args = arguments;
return change(args[1], args[2], en2cnChange.prototype.mapping.mapping);
}
en2cnChange.prototype.mapping = {
mapping : {
'\,': ',',
'\.': '。',
'\;': ';',
'\!': '!'
},
reg: function(){
if(this._reg == undefined){
//initial once
this._reg = getRegOf('\\W', this.mapping);
}
return this._reg;
}
}
//SBC to DBC case
function cn2enChange(){
var args = arguments;
return change(args[1], args[2], cn2enChange.prototype.mapping.mapping);
}
cn2enChange.prototype.mapping = {
mapping : {
',': '\,',
'。': '\.',
';': '\;',
'!': '\!'
},
reg: function(){
if(this._reg == undefined){
//initial once
this._reg = getRegOf('\\w', this.mapping);
}
return this._reg;
}
}
// event handler
function format(){
var str = $('#input').val();
var reg = Strategy.prototype.REG;
var rep = Strategy.prototype.REP;
var strategies = format.prototype.strategies;
for(var i in strategies){
var strategy = strategies[i];
str = str.replace(strategy[reg], strategy[rep]);
}
$('#output').val(str);
}
format.prototype.strategies = [
new Strategy(en2cnChange.prototype.mapping.reg(), en2cnChange),
new Strategy(cn2enChange.prototype.mapping.reg(), cn2enChange),
new Strategy(/\s/g, function(){return ''})// whtie space
];
function clear(){
$('textarea').each(function(){$(this).val('')});
}
</script>
<style type="text/css">
textarea{
display: inline-block;
width: 45%;
height:80%;
margin: 1em;
}
</style>
</head>
<textarea id="input" placeholder="input"></textarea>
<textarea id="output" placeholder="output"></textarea>
<br/>
<button id="format">format</button>
<button id="clear">clear</button>
</html>
相關文章
- java中去除全形和半形空格Java
- C#全形和半形轉換C#
- c#全半形轉換示例程式碼C#
- 安卓資源字串中加全形空格、半形空格、換行、@%等特殊字元安卓字串字元
- 詳解全形和半形的轉換
- win10系統怎麼禁用shift+空格組合鍵切換全半形Win10
- 全形字母轉換為半形?
- 一次性去除excel表中全半形空格的方法Excel
- oracle 全形半形轉換函式Oracle函式
- sql 去除字串的左右全形、半形空格SQL字串
- js全形字元轉為半形字元JS字元
- C#全形半形轉換函式C#函式
- 區分全形和半形的刪除字串兩端空格程式碼字串
- Html中連續半形空格的正常顯示HTML
- js保留文字的空格和換行效果JS
- 將一個字串中含有全形的數字字元、字母、空格或'%+-()'字元轉換為相應半形字元字串字元
- android 標點符號的全形半形轉換Android符號
- js實現的字串和陣列的相互轉換JS字串陣列
- JavaScript全形和半形相互轉換JavaScript
- Android中實現JSON字串和JSON物件的轉換AndroidJSON字串物件
- [顏色進位制轉換]js實現rgb和hex的相互轉換JS
- 全形轉半形函式函式
- Python 全形轉半形Python
- js 去掉空格.回車.換行JS
- js替換字串裡的空格JS字串
- js實現的陣列和CSV格式的相互轉換JS陣列
- 隱形轉換導致全表掃描案例
- css實現圓形、橢圓和半圓效果程式碼例項CSS
- 編寫Word“宏”輕鬆將全形數字轉換為半形(轉)
- 搜狗輸入法切換到半形
- JSON.NET框架實現C#物件和JSON字串的轉換JSON框架C#物件字串
- JS實現陣列去重JS陣列
- js顯式轉換和隱式轉換JS
- 關於oracle資料庫全形數字轉換半形數字方法Oracle資料庫
- Spark實現行列轉換pivot和unpivotSpark
- JS陣列去重的實現JS陣列
- JS實現JSON物件與URL引數的相互轉換JSON物件
- js和css3實現的圓形鐘錶效果JSCSSS3