当前位置: 首页 > 面试题库 >

如何删除所有前导和尾随的标点符号?

居飞扬
2023-03-14
问题内容

我想删除字符串中的所有前导和尾随标点符号。我怎样才能做到这一点?

基本上,我想保留单词之间的标点符号,并且需要删除所有开头和结尾的标点符号。

  1. .@_&/-允许如果由字母或数字环绕
  2. \' 如果以字母或数字开头,则允许

我试过了

Pattern p = Pattern.compile("(^\\p{Punct})|(\\p{Punct}$)");
Matcher m = p.matcher(term);
boolean a = m.find();
if(a)
    term=term.replaceAll("(^\\p{Punct})", "");

但是没有用!


问题答案:

好。因此,基本上,您想在字符串中找到某种模式,如果模式匹配,则采取措施。

这样做幼稚的方式将是乏味的。幼稚的解决方案可能涉及类似

while(myString.StartsWith("." || "," || ";" || ...)
  myString = myString.Substring(1);

如果您想做一些更复杂的任务,就不可能按照我提到的方式做。

这就是为什么我们使用正则表达式。它是您可以用来定义模式的“语言”。如果字符串匹配该模式,计算机将能够说出。要了解正则表达式,只需将其键入google。最早的链接之一:http : //www.codeproject.com/Articles/9099/The-30-Minute-Regex-
Tutorial

至于您的问题,您可以尝试以下方法:

myString.replaceFirst("^[^a-zA-Z]+", "")

正则表达式的含义:

  • 第一个^表示在此模式下,下一个必须在字符串的开头。

  • []定义字符。在这种情况下,这些不是NOT(第二个^)字母(a-zA-Z)。

  • +号表示可以重复的事物,并且仍与正则表达式匹配。

您可以使用类似的正则表达式删除尾随字符。

myString.replaceAll("[^a-zA-Z]+$", "");

$表示“在字符串末尾”



 类似资料:
  • 问题内容: 我很难尝试将.strip与以下代码行结合使用。 谢谢您的帮助。 问题答案: 您可以使用strip()删除尾随和前导空格。 注意:内部空间被保留

  • 问题内容: 我有几个像这样的字母数字字符串 除去 尾随 零的理想输出为: 前导 尾随零的期望输出为: 去除前导零和尾随零的期望输出为: 目前,我已经按照以下方式进行操作,如果有的话,请提出一种更好的方法: 问题答案: 那基本的 删除尾随和前导零?如果您只想删除尾随零,请改用(仅用于前导零)。 [文档中的更多信息。] 您可以使用一些列表推导来获得所需的序列,如下所示:

  • 问题内容: 我有一个包含两个字段(国家和ISO代码)的表: 在某些行中,第二个字段在开头和/或结尾处都有空格,这会影响查询。 有没有一种方法(在SQL中)遍历表并查找/替换field2中的空格? 问题答案: 您正在寻找TRIM。

  • 问题内容: Python与Perl 函数等效吗?如果是换行符,该函数将删除字符串的最后一个字符? 问题答案: 试用该方法(请参阅doc Python 2和Python 3)

  • 问题内容: 例如: 我可以这样做吗? 问题答案: 一个非常简单的实现是: 并继续添加任何其他类型的标点符号。 一种更有效的方法是 编辑:这里有关于效率和其他实现的更多讨论: 在Python中从字符串中删除标点符号的最佳方法

  • 我试图找出从字符串中删除所有标点符号和空格的正确方法,但保留撇号不变,例如: 不会留下来,但“欲望”会变成“欲望”。 我试过使用