【问题标题】:javascript if condition check string with newline symbol i.e \njavascript if条件检查字符串与换行符即\ n
【发布时间】:2013-10-31 10:00:08
【问题描述】:

在我的脚本中,我有一个带有换行符的字符串。我使用换行符 (\n) 将其解析为数组。

我很难在我的 if 条件下进行比较 (parsedarray[0]=='newline character')。请帮我比较一下 if 条件下的换行符。我还试图提醒parsedarray[0]。它提醒空白警报框。`我无法检查 if 语句中的换行符。 例如, 我有一个带有多个换行符的字符串,标签由 40 行组成。在我的脚本中,用户输入一个行号,该行号的字符串,在收到这两个信息后,我想用行号中输入的字符串替换换行符。这里的行号是一个索引。因此,我将再次通过加入已解析的字符串来构造单个字符串。我的数组大小也不应该增长。或减少.???重要的是,如果两个匹配项(换行符除外)都需要输入警报消息,我想用可用字符串验证给定的字符串。

 var strarray=doc.getElementbyid('mytextarea').value;
 var parsedarray=[];
 parsedarray=strarray.split('\\n');`

【问题讨论】:

  • parsedarray[0] 将是一个字符串,而不是一个字符,因此它可以有 0、1 个或更多字符。如果该条件匹配,显然警告框将为空白,因为字符串只有一个字符,即换行符。
  • parsedarray 从不包含换行符,split 根据换行符给出字符串的其他部分
  • 我想删除换行符并添加另一个字符串到该索引,???这样我的数组大小就不会增长。

标签: javascript if-statement compare newline conditional-statements


【解决方案1】:

使用indexOf 代替split 来查找指定值在字符串中第一次出现的位置。

例如:

var text="Hello world\n";
if(text.indexOf("\n")==-1){
  alert("No newline characters")
}else{
  alert("Contains newline characters")
}

【讨论】:

  • 我想在将换行符与一些字符串交换后使字符串大小相同???
【解决方案2】:

String.split() 不会在结果数组中包含分隔符。如果您想查找换行符的出现,我建议您改用String.indexOf("\n")

【讨论】:

  • 不,因为,我想在用一些字符串替换 \n 后使用解析的数组再次构造一个新字符串,目标是数组大小不应该增加。
【解决方案3】:

split 方法会将您的字符串拆分为一个字符串数组,这些字符串由您作为参数传递的字符分隔。例如:

var text = 'foo\nbar\nbaz',
    splitted = text.split('\n');

console.log(splitted); // ["foo", "bar", "baz"]

如果你想用另一个字符串替换你的换行符,你可以使用replace方法。

var text = 'foo\nbar\nbaz',
    replaced = text.replace(/\n/g, '-');

console.log(replaced); // foo-bar-baz

【讨论】:

  • 我不想替换所有换行符的唯一指定索引只需要替换???那太数组大小不应该超过旧大小??
  • 我应该添加一个新的分隔符吗??
  • 我其实不明白你想做什么。是否只替换第一个\n
  • no 取决于选择的索引,例如第 22 行,因此我需要使用同一用户给出的字符串更改行上的换行符。我动态读取行号来更改字符串。
【解决方案4】:

你可以这样做

<html>
<head>
<script>
function myFunction()
{
var strarray=document.getElementById("tre").value;
var eachLine = strarray.split('\\n');
alert('Lines found: ' + eachLine.length);
for(var i = 0, l = eachLine.length; i < l; i++) {
//do add another string to the index here
alert('Line ' + (i+1) + ': ' + eachLine[i]);

}
</script>
</head>
<body>
<textarea id="tre"></textarea>
<button onclick="myFunction()">Click me</button>
</body>
</html>

【讨论】:

  • 好吧,它打印空行,我想用另一个字符串替换换行符。老板???
  • 只替换换行符
  • @aarav ,通过使用 split 方法,您可以知道 '\n' 的确切位置,所以为什么不将替换文本附加到每个数组元素的末尾并将其存储在新字符串中跨度>
  • 我应该尝试一个通用的分隔符吗??
  • 使用上面的代码,在每个数组值的末尾追加新的字符。
【解决方案5】:

我重新创建了数组,例如在每个换行符之后添加分隔符 var one=document.forms[0]["mytextarea"].value; myarray=one.split('\|');。然后我使用分隔符拆分字符串。然后,我可以通过每个索引轻松访问换行符 \n 字符。在替换特定索引上的字符串后,我再次通过使用相同的分隔符连接它们来构造单个字符串。 var two=myarray.join('|'); 当我尝试打印索引时,我的警报框现在也显示 \n。感谢您的所有贡献..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多