10 эффективных методов переноса текста на различных языках программирования

Перенос текста — это распространенная задача в программировании, когда вам необходимо отформатировать длинные строки текста так, чтобы они соответствовали заданной ширине, или разбить их на несколько строк. В этой статье мы рассмотрим десять эффективных методов переноса текста на различных языках программирования, а также приведем примеры кода для демонстрации каждого метода.

  1. Python:
    Python предоставляет встроенный метод textwrap, который упрощает перенос текста.
import textwrap
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae ultrices erat."
wrapped_text = textwrap.fill(text, width=20)
print(wrapped_text)

<старый старт="2">

  • Java:
    В Java вы можете использовать пакет java.textдля переноса текста с помощью класса Wrap.
  • import java.text.*;
    String text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae ultrices erat.";
    int width = 20;
    String wrappedText = WordUtils.wrap(text, width);
    System.out.println(wrappedText);
    1. JavaScript:
      JavaScript не предоставляет встроенной функции переноса текста, но ее можно добиться с помощью регулярных выражений и манипуляций со строками.
    function wrapText(text, width) {
      let regex = new RegExp(".{1," + width + "}", "g");
      return text.match(regex).join("\n");
    }
    let text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae ultrices erat.";
    let wrappedText = wrapText(text, 20);
    console.log(wrappedText);

    <старый старт="4">

  • Ruby:
    В Ruby вы можете использовать драгоценный камень word_wrapдля удобного переноса текста.
  • require 'word_wrap'
    text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae ultrices erat."
    wrapped_text = WordWrap.ww(text, 20)
    puts wrapped_text
    1. C#:
      C# предоставляет класс TextWrapperв пространстве имен Microsoft.VisualBasic.FileIOдля переноса текста.
    using Microsoft.VisualBasic.FileIO;
    string text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae ultrices erat.";
    int width = 20;
    string wrappedText = TextFieldParserWrapper.WrapText(text, width);
    Console.WriteLine(wrappedText);
    1. PHP:
      PHP предлагает функцию wordwrapдля переноса текста.
    $text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae ultrices erat.";
    $width = 20;
    $wrappedText = wordwrap($text, $width, "\n");
    echo $wrappedText;
    1. Go:
      В Go вы можете использовать пакет textwrapдля переноса текста.
    import (
        "fmt"
        "strings"
        "text/tabwriter"
        "text/template"
    )
    func wrapText(text string, width int) string {
        tmpl := fmt.Sprintf("%%-%ds", width)
        w := new(tabwriter.Writer)
        w.Init(strings.Builder{}, 0, 0, 1, ' ', 0)
        fmt.Fprintf(w, tmpl, text)
        w.Flush()
        return w.String()
    }
    text := "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae ultrices erat."
    width := 20
    wrappedText := wrapText(text, width)
    fmt.Println(wrappedText)
    1. Swift:
      Swift предоставляет расширение для переноса текста с помощью класса NSParagraphStyle.
    import Foundation
    extension String {
        func wrappedText(width: Int) -> String {
            let paragraphStyle = NSMutableParagraphStyle()
            paragraphStyle.lineBreakMode = .byWordWrapping
            paragraphStyle.maximumLineHeight = CGFloat(width)
    
            let attributes = [NSAttributedString.Key.paragraphStyle: paragraphStyle]
            let attributedString = NSAttributedString(string: self, attributes: attributes)
    
            let textContainer = NSTextContainer(size: CGSize(width: CGFloat(width), height: CGFloat.greatestFiniteMagnitude))
            let layoutManager = NSLayoutManager()
            layoutManager.addTextContainer(textContainer)
    
            let textStorage = NSTextStorage(attributedString: attributedString)
            textStorage.addLayoutManager(layoutManager)
    
            layoutManager.glyphRange(for: textContainer)
    
            let wrappedText = layoutManager.characterRange(forGlyphRange: NSMakeRange(0, layoutManager.numberOfGlyphs), actualGlyphRange: nil)
            return (self as NSString).substring(with: wrappedText)
        }
    }
    let text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae ultrices erat."
    let width = 20
    let wrappedText = text.wrappedText(width: width)
    print(wrappedText)
    1. Kotlin:
      В Kotlin вы можете использовать функцию расширения wrapTextдля переноса текста.
    fun String.wrapText(width: Int): String {
        val regex = "(.{10,$width})(?:\\s+|$)".toRegex()
        return regex.replace(this) { "${it.value.trim()}\n" }
    }
    val text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae ultrices erat."
    val width = 20
    val wrappedText = text.wrapText(width)
    println(wrappedText)
    1. Rust:
      В Rust вы можете использовать контейнер textwrapдля переноса текста.
    use textwrap::Wrapper;
    fn wrap_text(text: &str, width: usize) -> String {
        let wrapper = Wrapper::new(width).break_words(true);
        wrapper.fill(text)
    }
    fn main() {
        let text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vitae ultrices erat.";
        let width = 20;
        let wrapped_text = wrap_text(text, width);
        println!("{}", wrapped_text);
    }

    Перенос текста — важная задача в программировании при работе с длинными строками текста. В этой статье мы рассмотрели десять эффективных методов переноса текста на различных языках программирования. Каждый метод сопровождается примерами кода, которые вы можете использовать в качестве справочного материала в своих проектах. Применяя эти методы, вы можете легко манипулировать и форматировать текст так, чтобы он соответствовал указанной ширине. Приятного кодирования!