// 字符串处理工具函数

/**
 * 截断字符串并添加省略号
 * @param {string} str - 原始字符串
 * @param {number} length - 保留的长度
 * @returns {string} 截断后的字符串
 */
export const truncateString = (str, length) => {
  if (!str || typeof str !== 'string' || str.length <= length) {
    return str
  }
  return str.substring(0, length) + '...'
}

/**
 * 移除HTML标签
 * @param {string} html - 包含HTML标签的字符串
 * @returns {string} 纯文本字符串
 */
export const stripHtmlTags = (html) => {
  if (!html || typeof html !== 'string') {
    return html
  }
  return html.replace(/<[^>]*>/g, '')
}

/**
 * 格式化内容预览
 * @param {string} content - 原始内容
 * @param {number} maxLength - 最大长度
 * @returns {string} 格式化后的预览内容
 */
export const formatContentPreview = (content, maxLength = 200) => {
  if (!content) return ''
  // 先移除HTML标签
  const plainText = stripHtmlTags(content)
  // 再截断字符串
  return truncateString(plainText, maxLength)
}

/**
 * 转义HTML特殊字符
 * @param {string} str - 原始字符串
 * @returns {string} 转义后的字符串
 */
export const escapeHtml = (str) => {
  if (!str || typeof str !== 'string') {
    return str
  }
  const map = {
    '&': '&amp;',
    '<': '&lt;',
    '>': '&gt;',
    '"': '&quot;',
    "'": '&#039;'
  }
  return str.replace(/[&<>"']/g, (m) => map[m])
}

/**
 * 解析URL查询参数
 * @param {string} url - URL字符串
 * @returns {Object} 查询参数对象
 */
export const parseQueryParams = (url) => {
  const queryString = url.split('?')[1]
  if (!queryString) return {}
  
  return queryString.split('&').reduce((params, param) => {
    const [key, value] = param.split('=')
    params[decodeURIComponent(key)] = decodeURIComponent(value || '')
    return params
  }, {})
}