本文目录导读:

Python脚本实现
基础版本
def truncate_text(text, max_length=100, start_keep=30, end_keep=30):
"""
截取文本的首尾部分
Args:
text: 原始文本
max_length: 最大长度
start_keep: 保留开头字符数
end_keep: 保留结尾字符数
Returns:
截取后的文本
"""
if len(text) <= max_length:
return text
start = text[:start_keep]
end = text[-end_keep:]
return f"{start}...{end}"
# 使用示例
text = "这是一个很长的文本,需要截取首尾内容,中间的部分会被省略号替代。"
result = truncate_text(text, max_length=50)
print(result)
进阶版本(支持多语言)
import re
def smart_truncate(text, max_length=100, keep_ratio=0.7):
"""
智能截取,保留首尾指定比例的内容
Args:
text: 原始文本
max_length: 最大长度
keep_ratio: 保留内容的比例(0-1之间)
"""
if len(text) <= max_length:
return text
# 计算保留的字符数
keep_chars = int(max_length * keep_ratio)
start_keep = keep_chars // 2
end_keep = keep_chars - start_keep
start = text[:start_keep]
end = text[-end_keep:]
return f"{start}...{end}"
# 使用示例
text = "Python是一种广泛使用的解释型、高级通用编程语言"
result = smart_truncate(text, max_length=20)
print(result) # 输出: Python...语言
JavaScript实现
基础版本
function truncateText(text, maxLength = 100) {
if (text.length <= maxLength) {
return text;
}
const startKeep = Math.floor(maxLength * 0.6);
const endKeep = maxLength - startKeep;
const start = text.slice(0, startKeep);
const end = text.slice(-endKeep);
return `${start}...${end}`;
}
// 使用示例
const longText = "这是一段很长的文本内容,需要在中间部分进行截取";
const result = truncateText(longText, 20);
console.log(result);
浏览器控制台脚本
// 网页中提取特定元素的首尾内容
(function() {
const element = document.querySelector('body');
const text = element.textContent;
function truncateText(text, maxLen = 200) {
if (text.length <= maxLen) return text;
const keep = maxLen / 2;
return text.slice(0, keep) + '...' + text.slice(-keep);
}
console.log(truncateText(text));
})();
Shell脚本实现
Linux/Mac
#!/bin/bash
# 首尾截取函数
truncate_text() {
local text="$1"
local max_length="${2:-100}"
if [ ${#text} -le $max_length ]; then
echo "$text"
return
fi
local start_keep=$((max_length / 2))
local end_keep=$((max_length - start_keep))
local start="${text:0:$start_keep}"
local end="${text: -$end_keep}"
echo "${start}...${end}"
}
# 使用示例
text="这是一个测试文本,用于演示Shell脚本中的首尾截取功能"
truncate_text "$text" 30
高级功能脚本
带日志和参数配置的完整脚本
#!/usr/bin/env python3
"""截取工具
支持多种模式和配置
"""
import argparse
import logging
class TextTruncator:
def __init__(self, start_marker="", end_marker=""):
self.start_marker = start_marker
self.end_marker = end_marker
self.logger = logging.getLogger(__name__)
def truncate(self, text, max_length=100, mode='chars'):
"""
多种截取模式
Args:
text: 输入文本
max_length: 最大长度
mode: 'chars'(字符), 'words'(单词), 'lines'(行)
"""
if mode == 'chars':
return self._truncate_chars(text, max_length)
elif mode == 'words':
return self._truncate_words(text, max_length)
elif mode == 'lines':
return self._truncate_lines(text, max_length)
def _truncate_chars(self, text, max_length):
if len(text) <= max_length:
return text
start_keep = max_length // 2
end_keep = max_length - start_keep
result = text[:start_keep] + "... " + text[-end_keep:]
self.logger.info(f"文本从 {len(text)} 字符截取到 {max_length} 字符")
return result
def _truncate_words(self, text, max_words):
words = text.split()
if len(words) <= max_words:
return text
start_keep = max_words // 2
end_keep = max_words - start_keep
return " ".join(words[:start_keep]) + "... " + " ".join(words[-end_keep:])
def _truncate_lines(self, text, max_lines):
lines = text.split('\n')
if len(lines) <= max_lines:
return text
start_keep = max_lines // 2
end_keep = max_lines - start_keep
return "\n".join(lines[:start_keep]) + "\n...\n" + "\n".join(lines[-end_keep:])
# 命令行接口
def main():
parser = argparse.ArgumentParser(description='首尾内容截取工具')
parser.add_argument('text', help='要截取的文本')
parser.add_argument('-m', '--max', type=int, default=100, help='最大长度')
parser.add_argument('--mode', choices=['chars', 'words', 'lines'],
default='chars', help='截取模式')
args = parser.parse_args()
truncator = TextTruncator()
result = truncator.truncate(args.text, args.max, args.mode)
print(result)
if __name__ == "__main__":
# 直接使用示例
truncator = TextTruncator()
text = "这是一个示例文本,用于演示首尾截取功能,Python是一种强大的编程语言。"
print(truncator.truncate(text, 20))
# 作为命令行工具使用
# main()
使用案例
截取
// 在浏览器控制台中运行
const pageText = document.body.innerText;
const truncated = truncateText(pageText, 500);
console.log('页面内容(截取后):', truncated);
日志文件处理
#!/bin/bash # 处理日志文件的首尾内容 log_file="/var/log/system.log" head_lines=5 tail_lines=5 echo "===== 日志开头 =====" head -n $head_lines "$log_file" echo "===== 日志结尾 =====" tail -n $tail_lines "$log_file"
选择建议:
- 文本处理:使用Python脚本,功能最强大
- 网页开发:使用JavaScript版本
- 命令行操作:使用Shell脚本
- 复杂场景:使用带参数配置的高级版本
这些脚本可以根据具体需求调整参数,实现灵活的首尾内容截取。