当前位置: 首页 > 面试题库 >

寻找换行

苗阳文
2023-03-14
问题内容

假设我在一行中有一些随机的文本块。像这样

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

但是无论出于何种原因(包含元素的宽度设置,使用文本缩放等),在查看器的屏幕上它都显示为两行或更多行。

Lorem ipsum dolor sit amet,

consectetur adipiscing elit.

要么

Lorem ipsum dolor sit

amet, consectetur

adipiscing elit.

有没有办法通过JavaScript找出发生换行的地方?

$('p').text()$('p').html()返回Lorem ipsum dolor sit amet, consectetur adipiscing elit.而不管文本如何显示。


问题答案:

这就是我最终使用的(随意批评和复制以作恶用)。

首先,当编辑来自用户时,将其拆分为$(editableElement).lineText(userInput)

jQuery.fn.lineText = function (userInput) {
   var a = userInput.replace(/\n/g, " \n<br/> ").split(" ");
   $.each(a, function(i, val) { 
      if(!val.match(/\n/) && val!="") a[i] = '<span class="word-measure">' + val + '</span>';
   });
   $(this).html(a.join(" "));
};

替换换行的原因是,编辑文本框中填充了$(editableElement).text(),它会忽略<br/>标签,但出于排版目的,它们仍将更改显示屏中下一行的高度。这不是最初目标的一部分,只是悬而未决的结果。

当我需要提取带格式的文本时,请致电$(editableElement).getLines(),其中

jQuery.fn.getLines = function (){
   var count = $(this).children(".word-measure").length;
   var lineAcc = [$(this).children(".word-measure:eq(0)").text()];
   var textAcc = [];
   for(var i=1; i<count; i++){
      var prevY = $(this).children(".word-measure:eq("+(i-1)+")").offset().top;
      if($(this).children(".word-measure:eq("+i+")").offset().top==prevY){
         lineAcc.push($(this).children(".word-measure:eq("+i+")").text());
   } else {
     textAcc.push({text: lineAcc.join(" "), top: prevY});
     lineAcc = [$(this).children(".word-measure:eq("+i+")").text()];
   }
   }
   textAcc.push({text: lineAcc.join(" "), top: $(this).children(".word-measure:last").offset().top});
   return textAcc;
};

最终结果是一列哈希,每个哈希包含内容和一行文本的垂直偏移量。

[{"text":"Some dummy set to","top":363},
 {"text":"demonstrate...","top":382},
 {"text":"The output of this","top":420},
 {"text":"wrap-detector.","top":439}]

如果我只想要无格式的文本,$(editableElement).text()仍然会返回

"Some dummy set to demonstrate... The output of this wrap-detector."


 类似资料:
  • 我有一组排列的数组,我想移除同构排列。 我们有 组排列,其中每个集合包含 个排列,每个排列表示为 元素的数组。我目前将其保存为数组,其中,和是固定的,N大于K。 如果存在将元素从< code>A转换为< code>B的置换< code>P,则两组置换< code>A和< code>B是同构的(例如,如果< code>a是集合< code>A的元素,则< code>P(a)是集合< code>B的元

  • Appium 支持 WebDriver 定位策略的子集: 通过 "class" 查找 (例如, UI 组件的类型) 通过 "xpath" 查找 (例如, 一个元素的路径以抽象的方式去表达,具有一定的约束) 你可以查看关于以上的列表,选择器策略 (English)。 Appium 还额外支持部分 Mobile JSON Wire Protocol 的定位策略。 -ios predicate stri

  • 我正在做一个项目,它将跟踪从包中的类到任何其他类的方法调用。我能够识别具体的类型是很重要的,而且我更希望有最小的跟踪开销。探针何时触发没有限制;它可以在调用方法之前或之后。 目前使用ASM,但对它没有要求。系统正在从AspectJ转移,以便允许动态附件,所以这是out。 下面是目前的情况。“Tracer”枚举/单例接收探测(int)并处理调用。查找从具体类型到引用类型的调用就足够了。 我进一步的想

  • 问题内容: 任何人都可以通过建议将C#代码转换为Java代码的转换器的名称来帮助我。实际上,我有一个用C#代码编写的工具,我正在尝试对其进行修改。由于我对C#和.NET框架一无所知,因此我似乎很难自行转换大型代码。我从一些网络信息中发现,存在一些可以将C#转换为Java的工具(虽然可能不正确,但是可以)。任何人都可以通过建议这些工具的名称来帮助我。 问题答案: 免责声明: 没有工具是完美的。 但是

  • 寻找完全数。 思路说明 所谓完全数,从维基百科的完全数词条中得到: 完全数,又称完美数或完备数,是一些特殊的自然数:它所有的真因子(即除了自身以外的约数)的和,恰好等于它本身,完全数不可能是楔形数。 例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6,恰好等于本身。第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,

  • 具有任意字符串的,如 我是否可以找到由空格分隔的重复子字符串(编辑)?在这种情况下,它将是“你好”、“我是”和“字符串”。 我一直在想这个问题有一段时间了,但我仍然找不到任何真正的解决办法。我也读过一些关于这个主题的文章,并偶然发现了后缀树,但即使我需要找到每一个重复,例如重复数大于2,这能帮助我吗? 如果是这样,是否有一些python库可以处理后缀树并对其执行操作? 编辑:很抱歉我说得不够清楚。