不知道把帖子发在哪个地方,就发在了这个地方。
一说起分段,可能用的最多就是借助HTML的块级元素进行分段,比如p,br,div
问题是,在某些不支持HTML的应用里,比如Applet小程序,Java Swing如何分段呢?
唯一的方法是用空格,比如在第一行末尾用n个空格,一直把第二段的开头几个字逼到第二段(当然不能用回车符),当然这有分辨率的限制,不同分辨率的显示效果是不同的(以1024×768分辨率为主),而且字体大小是12px,而且需要区分半角和全角。
有没有比较好的算法来计算第一行和第二行之间需要多少空格来填充以达到分段的目的。
我的想法是计算每段的字数,同时计算这段可分成几行,计算每行最大的字数,然后得出这段最好一行需要多少空格来填充。
简单的一段文字例如"
唯一的方法是用空格,比如在第一行末尾用n个空格,一直把第二段的开头几个字逼到第二段(当然不能用回车符),当然这有分辨率的限制,不同分辨率的显示效果是不同的(以1024×768分辨率为主),而且字体大小是12px,而且需要区分半角和全角。<br/>有没有比较好的算法来计算第一行和第二行之间需要多少空格来填充以达到分段的目的。<br/>
我的想法是计算每段的字数,同时计算这段可分成几行,计算每行最大的字数,然后得出这段最好一行需要多少空格来填充。"
把中间的<br/>替换成若干个空格,把“有没有比较好的算法...”挤到第二段,把“我的想法...”挤到第三段
下面是一段简单实现的代码,不过还是有点问题的:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META HTTP-EQUIV="ContentType" CONTENT="text/html;charset=utf-8">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<style>
*{
font-size:12px;
}
</style>
</HEAD>
<BODY>
<textarea name="input" cols="70" rows="14" style="width:100%">
在互联网世界当中,博客网站的种类是多种多样的。它们中的一些旨在教导、帮助人们交流协作、激发灵感,并拓展我们的思维空间。而另一些博客则侧重于激 发我们的情感,让我们感到愤怒,或是让我们开怀大笑。《电脑世界(Computerworld)》网站的编辑们这些优秀博客网站搜集整理在了一起,为我们 提供了一份最受他们所钟爱的博客网站的列表。最后,我们根据这些博客自身的信息广度、新闻价值、网站设计、更新频率以及娱乐价值,将这份50多位候选人的 大名单做了进一步的缩减,最终得到了这份15个世界最顶级的技术类博客网站排行榜。
不错,这份排名的确包含了很大的主观成分,但是我们认为它是有史以来发表过的此类博客网站的最棒的排行榜之一。这份名单所涵盖的范围非常广泛:从严肃 的技术性新闻,到对电脑游戏测评和评论,再到新潮消费者电子产品介绍。我们同时也在本份名单的最后增加了一些“荣誉提名”,因为这次排名的竞争是如此的激 烈,让我们感到很难取舍。
当然了,肯定不会是每一个人都赞同我们的观点。如果你认为有某个博客网站非常的优秀,而又没有出现在我们的“前15名排行榜“中的话,请在本文后面的评论当中留言与我们分享。
</textarea>
<br/>
<input type="button" value="转换" onclick="mychange()"/>
<input type="button" value="复制到剪切板" onclick="clipboardData.setData('Text',output.value);" style="margin-left:20px"/>
<SCRIPT LANGUAGE="JavaScript">
<!--
/**
*把半角字符转换成全角字符
*/
function DBC2SBC(str) {
var i;
var result='';
for(i=0;i<str.length;i++){
str1=str.charCodeAt(i);
if(str1<65296){
result+=String.fromCharCode(str.charCodeAt(i));
continue;
}
if(str1<125&&!flag)
result+=String.fromCharCode(str.charCodeAt(i));
else
result+=String.fromCharCode(str.charCodeAt(i)-65248);
}
return result;
}
/**
* StringBuffer类,主要是来处理拼接字符串
*/
function StringBuffer() {
this._strings_ = new Array;
}
StringBuffer.prototype.append = function(str) {
this._strings_.push(str);
}
StringBuffer.prototype.toString = function() {
return this._strings_.join("");
}
/**
*去掉字符串开始和结尾的空格
*/
String.prototype.trim=function(){
return this.replace(/(^\s*)|(\s*$)/g, "");
}
/**
* 计算字符的长度
*/
function strenlen(str){
var counter;
var i;
counter=0;
for(i=0;i<str.length;i++){
while(str.charAt(i)==' '||str.charCodeAt(i)>255) i++;
if(str.charAt(i+1)==' '||str.charCodeAt(i+1)>255||i==str.length-1) counter++;
}
return counter;
}
/**
* 生成指定长度的空格字符串
*/
function countofspace(num){
var max = parseInt(num);
var space = ' ';
var strA = new StringBuffer();
for(var i=0;i<max;i++){
strA.append(space);
}
return strA.toString();
}
/**
* 分段思路:使用空格迫使它跳到下一行
*/
function mychange(){
//每行59个字,708/12=59个汉字=118个字节
var inputstr = DBC2SBC(input.innerText);
var inputes = escape(inputstr);
inputes = inputes.split('%0D%0A');
var result = new StringBuffer();
for(var i=0;i<inputes.length;i++){
var strr = unescape(inputes[i]);
if(strr.trim().length!=0){
var offset = 118-(strenlen(strr)%118);
result.append(strr.trim());
result.append(countofspace(offset));
}
}
output.innerHTML = result.toString();
}
//-->
</SCRIPT>
<br/>
<textarea name="output" cols="59" rows="14" style="width:708px"></textarea>
</BODY>
</HTML>
分享到:
相关推荐
shell脚本替换文件中的tab为空格,删除空白行(空白行:有空格而没有字符)
word中批量删除:空格,段首空格,空段.pdf
用空格替换“。”,“-”和“ _” 原名: Atomix.VirtualDJ.8.Pro.Infinity.v8.0.0.2325.Incl.Patch.and.Keygen-R2R 清除名称: Atomix VirtualDJ 8 Pro Infinity v8.0.0.2325包含补丁程序和Keygen R2R ArenaBG...
2047:【例5.16】过滤空格 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 23949 通过数: 15169 【题目描述】 过滤多余的空格。一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格。 【输入】 一行...
空格,一个看不见的字符,很不起眼,也正由于不起眼,很多人经常忽略它,导致代码出错,却还找不着北。这里,我们来聊聊bash中空格的那点事
一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格。 【输入】 一行,一个字符串(长度不超过200 ),句子的头和尾都没有空格。 【输出】 过滤之后的句子。 【输入样例】 Hello world.This is c ...
给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello” 输入描述: 输入数据有多组,每组占一行...
RPG_Maker_XP脚本:空格加速,不能用于vx
一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格。 【输入】 一行,一个字符串(长度不超过200),句子的头和尾都没有空格。 【输出】 过滤之后的句子。 【输入样例】 Hello world.This is c ...
字请用空格分隔,字请用空格分隔,字请用空格分隔,字请用空格分隔,字请用空格分隔,字请用空格分隔,字请用空格分隔,字请用空格分隔,
拦截了空格,可以用双空格/制表符代替,用/**/当做空格,用括号包起来进行,用回车代替空格,以及尝试反引号`的使用: ()代替空格 /**/代替空格 回车代替空格 反引号~代替空格 1.6等于号绕过 拦截了等于号,我们可以...
NOSSA是“不允许使用任何起始空间”的缩写,它通过确保所有输入和textareas值都不能以空格开头来防止这种情况。 安装 npm install nossa 或对于CDN版本,可以在上使用它 [removed] 用法 import "nossa" ; // or ...
汽车碰撞测试按空格开始
要禁用/启用特定语言包的功能,可以在config.cson使用语法范围的属性。 例如 ' .slim.text ' : whitespace : removeTrailingWhitespace : false 您可以在语法包的设置视图顶部找到scope 。 注意:对于.source.jade ...
网页制作常见问题解答网页制作常见问题解答
防不胜防:一个空格在数据库里可能引发的N重血案.pdf
(阶乘) 常规运算符优先级括弧空格优先空格优先? 这是正确的! > 3+6/35> 3 + 6/35> 3+6 / 33但: > 1+ 2"input" (line 1, column 4):unexpected whitespace after `+`> 1 +2"input" (line 1, column 4):...
eslint-plugin-空白用于空格的ESLint插件用法此插件要求还安装ESLint。 在安装了ESLint和此插件的情况下,您将需要启用该插件并配置其规则。安装如果尚未安装ESLint,请执行以下操作: npm install eslint安装插件:...
作用:去除字符串中的空格或指定字符 一、默认用法:去除空格 str.strip() : 去除字符串两边的空格 str.lstrip() : 去除字符串左边的空格 str.rstrip() : 去除字符串右边的空格 注:此处的空格包含’\n’, ‘\r...