如何在经典 asp 中将文本分隔为列表
how to separate a text as a list in classic asp
我有一个问题,我需要弄清楚如何拆分在文本区域中输入的文本,但在输入时只是视觉上的顺序,我会详细解释。
确定的用户在文本区域中键入如下内容
这是输入的样子
1- sample text 1.
2- sample text 2.
3- sample text 3.
这就是用户在文本框中键入它的方式,但是当我显示它时它看起来像这样(请注意并非所有用户都以点结尾)
1- sample text 1. 2- sample text 2. 3- sample text 3.
如何在视觉上将它们分开并显示为列表?我尝试了 replace、mid 和其他功能,但没有用,在此先感谢
试试这个,在 line-breaks 处拆分文本并遍历数组以创建列表:
function addText() {
let list = document.querySelector('#list');
let text = document.querySelector('#text').value;
let values = text.split('\n');
let listFragment = new DocumentFragment();
values.forEach(value => {
let span = document.createElement('span');
span.textContent = value + ' ';
listFragment.append(span);
});
list.append(listFragment);
}
<textarea id="text"></textarea>
<button onClick="addText()">enter</button>
<div id="list"></div>
因为 HTML 会忽略空格,您不会看到换行符,但您可以通过查看浏览器页面源代码来确认它们的存在。
例如,如果您想获取文本并将其输出为无序列表 (<ul>
),您可以这样做;
<%
Option Explicit
'Starting point for the script.
Call init_page()
Sub init_page()
Dim issubmit: issubmit = (Request.Form.Count > 0)
Dim value: value = Request.Form("sampletext") & ""
Call build_form(value)
If issubmit Then
Call Response.Write(build_list(value))
End If
End Sub
Sub build_form(value)
%>
<form method="POST">
<textarea name="sampletext" rows="5"><%= value %></textarea>
<button>Submit</button>
</form>
<%
End Sub
Function build_list(value)
Dim html, list, item, items
If Len(value) < 1 Then build_list = ""
list = Split(value, vbNewLine)
If IsArray(list) Then
html = "<ul>"
items = UBound(list)
For item = 0 To items
html = html & "<li>" & list(item) & "</li>"
Next
html = html & "</ul>"
Else
html = "Error: List was not in the correct format"
End If
build_list = html
End Function
%>
该示例是一个单页 ASP 页面脚本,它将表单发布到自身并使用函数获取发布的文本,使用 Split()
将其转换为数组并使用该数组来构建一个写回页面的无序列表。这绝不是一个解决方案,它旨在作为一个培训练习,让您了解如何在您自己的项目中执行此操作。
如果您只是想像输入时一样显示它而没有太多额外的麻烦,您可以在一行代码中使用 replace()
:
replace(inputFieldString, vbCrlf, '<br>')
我们的一些旧系统使用此方法处理来自文本区域输入的内容。快速简单。
我有一个问题,我需要弄清楚如何拆分在文本区域中输入的文本,但在输入时只是视觉上的顺序,我会详细解释。
确定的用户在文本区域中键入如下内容
这是输入的样子
1- sample text 1.
2- sample text 2.
3- sample text 3.
这就是用户在文本框中键入它的方式,但是当我显示它时它看起来像这样(请注意并非所有用户都以点结尾)
1- sample text 1. 2- sample text 2. 3- sample text 3.
如何在视觉上将它们分开并显示为列表?我尝试了 replace、mid 和其他功能,但没有用,在此先感谢
试试这个,在 line-breaks 处拆分文本并遍历数组以创建列表:
function addText() {
let list = document.querySelector('#list');
let text = document.querySelector('#text').value;
let values = text.split('\n');
let listFragment = new DocumentFragment();
values.forEach(value => {
let span = document.createElement('span');
span.textContent = value + ' ';
listFragment.append(span);
});
list.append(listFragment);
}
<textarea id="text"></textarea>
<button onClick="addText()">enter</button>
<div id="list"></div>
因为 HTML 会忽略空格,您不会看到换行符,但您可以通过查看浏览器页面源代码来确认它们的存在。
例如,如果您想获取文本并将其输出为无序列表 (<ul>
),您可以这样做;
<%
Option Explicit
'Starting point for the script.
Call init_page()
Sub init_page()
Dim issubmit: issubmit = (Request.Form.Count > 0)
Dim value: value = Request.Form("sampletext") & ""
Call build_form(value)
If issubmit Then
Call Response.Write(build_list(value))
End If
End Sub
Sub build_form(value)
%>
<form method="POST">
<textarea name="sampletext" rows="5"><%= value %></textarea>
<button>Submit</button>
</form>
<%
End Sub
Function build_list(value)
Dim html, list, item, items
If Len(value) < 1 Then build_list = ""
list = Split(value, vbNewLine)
If IsArray(list) Then
html = "<ul>"
items = UBound(list)
For item = 0 To items
html = html & "<li>" & list(item) & "</li>"
Next
html = html & "</ul>"
Else
html = "Error: List was not in the correct format"
End If
build_list = html
End Function
%>
该示例是一个单页 ASP 页面脚本,它将表单发布到自身并使用函数获取发布的文本,使用 Split()
将其转换为数组并使用该数组来构建一个写回页面的无序列表。这绝不是一个解决方案,它旨在作为一个培训练习,让您了解如何在您自己的项目中执行此操作。
如果您只是想像输入时一样显示它而没有太多额外的麻烦,您可以在一行代码中使用 replace()
:
replace(inputFieldString, vbCrlf, '<br>')
我们的一些旧系统使用此方法处理来自文本区域输入的内容。快速简单。