首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何通过jline3在每一行添加字符串?

通过jline3在每一行添加字符串,可以使用TerminalLineReader类来实现。

首先,需要创建一个Terminal对象,用于处理终端输入输出。可以使用TerminalBuilder类来创建一个Terminal对象,如下所示:

代码语言:txt
复制
Terminal terminal = TerminalBuilder.builder().build();

接下来,创建一个LineReader对象,用于读取用户输入并显示提示信息。可以使用LineReaderBuilder类来创建一个LineReader对象,如下所示:

代码语言:txt
复制
LineReader lineReader = LineReaderBuilder.builder()
        .terminal(terminal)
        .build();

然后,可以使用lineReader.readLine()方法来读取用户输入的每一行,并在每一行后面添加字符串。可以使用AttributedString类来处理字符串的样式,如下所示:

代码语言:txt
复制
String line = lineReader.readLine();
AttributedString attributedString = new AttributedStringBuilder()
        .append(line)
        .append(" 添加的字符串", AttributedStyle.BOLD.foreground(AttributedStyle.GREEN))
        .toAttributedString();
lineReader.getTerminal().writer().println(attributedString);
lineReader.getTerminal().flush();

在上述代码中,AttributedStringBuilder类用于构建带有样式的字符串,append()方法用于添加字符串和样式,toAttributedString()方法用于获取最终的AttributedString对象。然后,使用lineReader.getTerminal().writer().println()方法将带有样式的字符串输出到终端。

完整的示例代码如下所示:

代码语言:txt
复制
import org.jline.reader.LineReader;
import org.jline.reader.LineReaderBuilder;
import org.jline.terminal.Terminal;
import org.jline.terminal.TerminalBuilder;
import org.jline.utils.AttributedString;
import org.jline.utils.AttributedStringBuilder;
import org.jline.utils.AttributedStyle;

public class JLineExample {
    public static void main(String[] args) {
        try {
            Terminal terminal = TerminalBuilder.builder().build();
            LineReader lineReader = LineReaderBuilder.builder()
                    .terminal(terminal)
                    .build();

            String line = lineReader.readLine();
            AttributedString attributedString = new AttributedStringBuilder()
                    .append(line)
                    .append(" 添加的字符串", AttributedStyle.BOLD.foreground(AttributedStyle.GREEN))
                    .toAttributedString();
            lineReader.getTerminal().writer().println(attributedString);
            lineReader.getTerminal().flush();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

这样,每次用户输入一行内容后,都会在该行的末尾添加指定的字符串,并以绿色粗体显示。

请注意,以上示例代码中使用的是jline3库,你可以根据自己的需求进行修改和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Shell脚本中逐行读取文件的命令方法

    - 开始while循环,并在变量“rows”中保存一行的内容 - 使用echo显示输出内容,$rows变量为文本文件中的每行内容 - 使用echo显示输出内容,输出内容包括自定义的字符串和变量,$rows...- 使用echo显示输出内容,输出内容包括自定义的字符串和变量,$rows变量为文本文件中的每行内容 Tips:可以将上面的脚本缩减为一行命令,如下: [root@localhost ~]# cat mycontent.txt...|while read rows;do echo "Line contents are : $rows";done 方法三、使用传入的文件名作为参数 第三种方法将通过添加$1参数,执行脚本时,脚本后面追加文本文件名称...,并在变量“rows”中保存一行的内容 - 使用echo显示输出内容,$rows变量为文本文件中的每行内容 - 使用输入重定向<从命令行参数$1读取文件内容 方法四、使用awk命令 通过使用awk命令...,通过单独读取行,可以帮助搜索文件中的字符串

    9.1K21

    Python中的文件处理

    文件的一行都以特殊字符结尾,称为EOL或行尾字符,例如逗号{,}或换行符。它结束当前行,并告诉口译员一个新的开始。让我们从读取和写入文件开始。...,并且for循环将打印文件中存在的一行。...append()模式 让我们看看追加模式如何工作: # append() 添加 file = open('软件测试test.txt','a') file.write("这将添加此行") file.close...() 文件处理中还有其他各种命令可用于处理各种任务,例如: rstrip():此函数从右侧的空格中删除文件的一行。...lstrip():此函数从左侧的空格中删除文件的一行。 它旨在在使用代码时提供更简洁的语法和异常处理。这就解释了为什么将它们与适用的语句一起使用是一种好的做法。

    2K20

    《看漫画学python》第十一天-文件读写

    • errors参数用来指定在文本文件发生编码错误时如何处理。推荐errors参数的取值为'ignore',表示遇到编码错误时忽略该错误,程序会继续执行,不会退出。...• readlines():读取文件数据到一个字符串列表中,一行数据都是列表的一个元素。 • write(s):将字符串s写入文件中,并返回写入的字符数。...• writelines(lines):向文件中写入一个字符串列表。不添加行分隔符,因此通常为一行末尾都提供行分隔符。 • flush():刷新写缓冲区,文件没有关闭的情况下将数据写入文件中。...• readlines():读取文件数据到一个字节列表中,一行数据都是列表的一个元素。 • write(b):写入b字节,并返回写入的字节数。...不添加行分隔符,因此通常为一行末尾都提供行分隔符。 • flush():刷新写缓冲区,文件没有关闭的情况下将数据写入文件中。

    18820

    C++ Qt开发:StandardItemModel数据模型组件

    获取表头 header,并将其分割成一个字符串列表 headerList,作为模型的水平表头标签。 循环处理一行数据,分割每行的文本为一个字符串列表 tmpList。...获取数据区文字,对于一行一列,以制表符 \t\t 分隔,写入文件。最后一列根据选中状态写入 1 或 0。 将表头文字和数据区文字分别追加到 plainTextEdit 文本框中。...aStream << str << "\n"; } } 运行程序后,读者可以点击保存文件按钮,并将其保存到任意位置,此时打开文件,可看到如下图所示的效果; 1.3 插入与删除 首先来解释一下如何添加一行新的行...,其实添加与插入原理一致,唯一的区别在于,添加一行新的数据是在行尾加入,这个可以使用model->columnCount()来得到行尾,而插入则是选中当前selection->currentIndex...// 【添加一行】:为TableView添加一行数据(文件末尾插入) void MainWindow::on_actionAppend_triggered() { QList<QStandardItem

    36610

    如何用 awk 删除文件中的重复行【Programming】

    对于文件的一行,如果行出现次数为零,则将其增加一并打印该行,否则,它仅增加出现次数而无需打印该行。 我对awk并不熟悉,所以我想了解它是如何通过这么短的脚本来实现这一点的。...我做了研究发现以下几点: 输入文件的一行都会执行awk“脚本”!visited[$0]++。 visit []是类型为关联数组 (又称为Map )的变量。...visited [ $0]访问存储映射中的值,其键值等于$0(正在处理的行),也称为匹配项(我们将会在下面设置)。 取非(!)的值:awk中,任何非零数字值或任何非空字符串值均为true 。...visited[$0]++ { print $0 }' your_file > deduplicated_file 对于文件的一行,如果表达式成功,则将该行打印到输出。...sort -uk2 | sort -nk1 | cut -f2- 工作原理 假设我们有以下文件: abc ghi abc def xyz def ghi klm “cat -n test.txt”每行前添加序号

    8.7K00

    Vim给文件加行号,这通惊为天人的操作没sei了!文末天书慎点

    模式 ^ 匹配一行的开头,\= 表达式使用 printf() 来格式化当前行的数字: %-4d 是一个左对齐的整数, 如果需要,可以通过4列的宽度中添加空格来填充, %4d 是右对齐的,%04d....") - line("'<") + 1) 上面的示例的格式字符串是“%d”。它插入一个左对齐的数字,后跟一个句点,和一个制表符TAB。选定范围内的一行都进行了编号。...此外,选择任何行之前,需要设置第一个行号的值。输入以下内容: :let i = 1 nl 指令 基于Unix的系统中,number lines 工具可以通过过滤整个缓冲区来插入数字: :%!...nl -ba nl 指令有许多选项来控制对哪些行进行编号,以及如何对数字进行格式化。 要给一部分内容添加行号,请指定哪些行应该用范围编号。...nl -ba 使用 nl 实用程序时,默认情况下最多会添加 6 个前导空格,数字与行内容之间用一个制表符分隔。将前导空格减少到 2 (最多可达 99 个),并将分隔符替换为“.”

    2.5K20

    【Go语言绘图】图片添加文字(一)

    前一篇讲解了利用gg包来进行图片旋转的操作,这一篇我们来看看怎么图片上添加文字。 绘制纯色背景 首先,我们先绘制一个纯白色的背景,作为添加文字的背景板。...这时,需要先将字符串先转化为rune数组,或者通过直接对字符串使用 for range 遍历,可以避免中文的情况出现乱码的情况。...遍历时有一个小细节,那就是判断是否已经到达最后一行,如果到达最后一行,则要考虑是否添加省略号了。...//如果已经是最后一行,则需要判断剩余字符串是否仍旧超过最大宽度 if line == maxLine { sw, _ := dc.MeasureString(s) // 如果超过则需要在末尾添加省略号...,因为需要居中展示,一行的宽度是变化的,X轴坐标是不确定的,但是Y轴坐标是可以先计算出来的,因为一行的高度和行间距我们都已经知道了。

    2.8K10

    Python代码注释的一些基础知识

    虽然Python没有这种多行注释功能,但可以Python中创建多行注释,主要有一下两种简单的方法。 第一种方法是一行后面简单地按下回车键,添加一个新的#标记,然后继续注释: ?...程序将忽略以#标记开头的一行。 另一种方法是使用多行字符串将注释包装在一组三引号中: ? 这与Java中的多行注释类似,Java中,包含在三元引号中的所有内容都将成为注释。...使用这种多行注释时要小心,如果有疑问,保险起见在后面的一行添加一个#标记即可。 Python注释快捷键 每次需要添加注释时,都要键入#标记可能会很繁琐。那么,我们能做些什么来加快速度呢?...这里有一些技巧可以帮助你更快地添加注释。 第一就是使用多个游标,就是通过屏幕上放置多个光标来完成任务。左键单击时,只需按住ctrl或cmd键,就会看到屏幕上闪烁的线条: ?...这段代码很不规范,解释代码的一行之前都有一个注释。通过为变量、函数和集合指定合理的名称,这个脚本可以变得更简单,如下所示: ?

    1.2K60

    【力扣算法09】之 6. N 字形变换 python

    如果 numRows 为 1,则直接返回原字符串 s。 然后,创建 numRows 个字符串,用于保存一行的字符。 接下来,遍历字符串 s 中的每个字符,并根据规律将字符放入对应的行中。...规律1:前 numRows 个字符依次放入一行中。 规律2:之后的 numRows-2 行,字符依次逆序放入一行中,即从倒数第二行开始往上逐行放置字符。...规律3:重复规律1和规律2,直到遍历完字符串 s 中的所有字符。 最后,将一行的字符拼接起来,得到最终结果。 代码分析 首先,代码中定义了一个 Solution 类,用于实现字符串变换的方法。... convert 方法中,接受两个参数 s 和 numRows,并返回变换后的字符串。 方法开始处判断 numRows 是否为 1,如果是则直接返回原字符串 s。...创建一个列表 rows,长度为 numRows,用于保存一行的字符。这里使用了列表推导式来创建初始化的空字符串列表。

    9010

    在数据框架中创建计算列

    标签:Python与Excel,pandas Excel中,我们可以通过先在单元格中编写公式,然后向下拖动列来创建计算列。PowerQuery中,还可以添加“自定义列”并输入公式。...其正确的计算方法类似于Power Query,对整个列执行操作,而不是循环一行。基本上,我们不会在pandas中循环一列,而是对整个列执行操作。这就是所谓的“矢量化”操作。...df[‘公司名称’].str是列中的字符串值,这意味着我们可以直接对其使用字符串方法。通过这种方式进行操作,我们不会一行一行地循环遍历。...记住,我们永远不应该循环一行来执行计算。pandas实际上提供了一种将字符串值转换为datetime数据类型的便捷方法。...我们需要首先考虑这些值,因为大多数情况下,pandas不知道如何处理它们。我们可以使用.fillna()方法将NAN值替换为我们想要的任何值。

    3.8K20

    如何用命令行将文本两行合并为一行

    KEY 7329:2407 string 2 KEY 0:1774 string 1 若能在键值之间使用某种分隔符,如 $ 或 ,,那就更好了: KEY 4048:1736 string, 3 如何把两行合并成一行...,是紧跟在%s后面的字符串,表示输出的行内容之后添加逗号和空格作为分隔符。 整个printf语句的作用是打印当前行的内容($0),并在其后附加一个逗号和空格。...这个过程会一直重复,直到文件的最后一行。 最终效果是将yourFile中的相邻两行合并为一行,中间以逗号和空格分隔。...这意味着执行 N 命令后,sed 的工作空间中将同时包含当前行(即原始的“当前行”)和下一行的内容。...综上所述,此 sed 命令的作用是: 对于 yourFile 中的一行,首先使用 N 命令将其与下一行合并为一个临时缓冲区,两者之间以换行符分隔; 然后应用 s/\n/, / 命令,将临时缓冲区中的换行符替换为逗号和空格连接的字符串

    31010

    【Python 第33课】 处理文件中的数据

    因为一行都是一条学生成绩的记录,所以用readlines,把一行分开,便于之后的数据处理: lines = f.readlines() f.close() 提示:程序中,经常使用print来查看数据的中间状态...3.对一条数据进行处理。...如何把一个学生的几次成绩合并,并保存起来呢?我的做法是:对于一条数据,都新建一个字符串,把学生的名字和算好的总成绩保存进去。...[0], sum) 这里几个要注意的点: 对于一行分割的数据,data[0]是姓名,data[1:]是所有成绩组成的列表。...score是一个字符串,为了做计算,需要转成整数值int。 result中,我加了一个制表符\t和换行符\n,让输出的结果更好看些。 5.得到一个学生的总成绩后,把它添加到一个list中。

    93880

    【Python百日精通】一文搞定Python f-字符串与 Print 结束符

    1.4 结束符 Python 中,print() 函数默认会在输出内容后添加一个换行符(即 end="\n")。...这就是为什么两个 print 函数的输出会换行。 更改结束符: 可以通过指定 end 参数来改变 print 函数的结束符。...例如: print("这是一行", end=" ") # 输出后不换行,继续一行输出 print("接着输出") # 输出 "这是一行 接着输出" 通过更改结束符,可以实现更灵活的输出格式。...通过字符串前加上 f 并在字符串中使用大括号 {} 包含表达式,可以直接在字符串中嵌入变量和表达式的值。 2.3 转义字符 转义字符用于字符串中表示一些特殊字符,例如换行符 \n 和制表符 \t。...这些字符控制输出格式时非常有用。 2.4 print 结束符 print 函数默认会在输出内容后添加一个换行符,通过指定 end 参数可以改变这一行为,从而实现更灵活的输出格式。

    23410

    简明AWK实战教程

    当我们不指定文本内容的分割符的时候,awk默认把一行的文本内容按照空格进行划分为列(当存在多个连续的空格时当做一个分割)。...我们可以给一行的数据添加上一些字符串信息到制定的位置: AWK添加字符串输出 awk '{print "IP统计>",1,"数量:",3}' test.txt 可知,{Action}字段内,使用双引号包裹的信息...AWK添加字符串输出 3.2 简单介绍Pattern部分 前面我们只是简单的介绍了{Action},下面我们简单的了解一下Pattern,也就是模式。...AWK的常用内置变量 例如:NR,用来表示一行的行号,可以输出文本的时候显示行号: NR:显示一行的行号 NF变量则记录了一行一共有多少列: NF:统计显示一行有多少列 此时,打印的一行首尾的数字是对应的行一共有几列...通过使用管道命令 | ,可以直接上上一个命令的输出作为AWK数据的输入。 AWK通过管道命令处理终端的输出流 在上面的命令中,使用$3=="root" 表达式实现字符的匹配。

    1.7K30

    Perl正则表达式:正则匹配

    初步了解了正则表达式语言之后,接下来需要了解如何在Perl中使用正则表达式。...⑵模式修饰符 除了界定符前可以指定处理模式,界定符之后还可以添加小写字母修饰符。这些修饰符也叫标志(flag),用来改变默认的匹配行为,正如上一小节展示的使用ASCII编码的//a一样。...对于具有多个换行符的字符串,也即多行文本数据变量,可以使用//m修饰符,使得脱字符^和$可以同时锚定字符串开头、一行开头、字符串结尾、一行结尾,如下所示: $_ = "This is the wilma...\n"; } 上面代码中如果不加//m修饰符则^只会匹配字符串开头从而匹配失败。此外还有另一种更严谨的锚位方法,使用\A、\Z、\z锚定字符串的开头、一行末尾、字符串结尾。...$what的值,正则表达式会根据$what的值对命令行参数指定的文件的一行开头进行匹配,匹配成功则输出该行内容。

    4.2K10

    .NETC# 程序如何在控制台终端中以字符表格的形式输出数据

    一篇控制台窗口中监听前台窗口的博客中,我控制台里以表格的形式输出了每一个前台窗口的信息。控制台里编写一个字符表格其实并不难,毕竟 ASCII 中就已经提供了制表符。...,于是会看到输出一行都有一个空白行出现(虽然我现在仍不知道原因) 定义列时,每个参数都是一个 ConsoleTableColumnDefinition 的实例,为了方便,我允许隐式从元组转换...,都可以通过 BuildRow 方法,传入数据实例和字符串换行方法,得到一行字符串。...,应如何处理此字符串: Truncate 截断字符串 TruncateWithEllipsis 截断字符串,并在末尾添加省略号 Wrap 将字符串换行 注意,当选择 Wrap 换行时,通过 BuildRow...如何在控制台程序中监听 Windows 前台窗口的变化 - walterlv Walterlv.Packages/src/Utils/Walterlv.Console 参考资料 D 的个人博客 本文会经常更新

    45930

    LeetCode 06Z字形变换&07整数反转

    在这里插入图片描述 这样只需要考虑上下两个方向往集合中添加元素,最终就可以实现啦。不过字符串叠加时候尽量不要使用String直接加,会很慢。这种方法只能干掉40%的人,一般般。...因为每次只加一个字符,我们如果按照以下的思路看待这个问题(原字符串弯曲),从一层看,能不能找到一层有什么规律呢? ?...最后一层单独考虑 这样整个逻辑分析就完成了,可以根据位置添加元素进去再取值。...首先,该方法先存到List[]再取,其实是遍历两次,其实大可不必这样,我们可以进行计算一层的同时加入到结果中。...其次,由于边界的问题我们需要考虑太多的边界问题,我们对此对中间层的考虑优化,两个节点位置通过计算这样组合,可以优化边界的if else判断。 ?

    32320
    领券