我有一个字符串,我需要找到该字符串中任何字母数字字符的最后一次出现。无论字符串中最后一个字母数字字符是哪个,我都想要该索引。对于text="HelloWorld!-"输出将是'd'的索引text="Hello02,"输出将是“2”的索引。我知道我可以用一种“蛮力”的方式来做到这一点,检查每个字母和每个数字并找到最高索引,但我确信有一种更简洁的方法来做到这一点,但我找不到它。 最佳答案 这将按预期工作,甚至可以处理几乎所有Unicode字符和数字:publicstaticfinalintlastAlphaNumeric(Strings
我需要按照以下规则交换字符串中的字母:A被T代替T被A代替C被G取代G被C替换例如:ACGTA应该变成TGCAT解决此问题的最佳方法是什么? 最佳答案 正在搜索java"AtoT,TtoA"找到这个suggestion:Stringsequence="AATTTCTCGGTTTCAAT";sequence=sequence.replace("A","t").replace("T","a").replace("C","g").replace("G","c").toUpperCase();System.out.println(seque
我的任务是将此代码转换为反向排序,但我终究无法弄清楚如何去做。这些是我的排序、查找最大和交换方法。我觉得我在这里遗漏了一些明显的东西,非常感谢任何帮助。publicstaticvoidsort(String[]arr){for(intpass=1;pass0){largestPos=i;}}returnlargestPos;}publicstaticvoidswap(String[]arr,intfirst,intsecond){Stringtemp=arr[first];arr[first]=arr[second];arr[second]=temp;}}
更新:我的实用程序的最终版本如下所示:StringBuilderb=newStringBuilder();for(charc:inLetters.toLowerCase().toCharArray()){switch(c){case'0':b.append("0");break;case'1':b.append("1");break;case'2':case'a':case'b':case'c':b.append("2");break;case'3':case'd':case'e':case'f':b.append("3");break;case'4':case'g':case'h':
我有一个类似“HelloWorldMyNameIsCarl”的字符串,我希望它变成类似“Hello_World_My_Name_Is_Carl”的字符串。我该怎么做? 最佳答案 是的,正则表达式可以为您做到这一点:"HelloWorldMyNameIsCarl".replaceAll("(.)([A-Z])","$1_$2")表达式[A-Z]将匹配每个大写字母并将其放入第二组。您需要第一组。以避免替换第一个“H”。作为Piligrim指出,此解决方案不适用于任意语言。要捕获Unicode标准定义的任何大写字母,我们需要Unicode
当我回答这个问题时,我想到了一个问题post匹配除字母数字以外的ASCII字符。这是我试过的,但不正确。(?=[\x00-\x7F])[^a-zA-Z0-9]regex101demo我不是在寻找解决方案,只是想知道我哪里错了。这个正则表达式模式是什么意思?谢谢根据我的理解,(?=[\x00-\x7F])用于检查ASCII字符和[^a-zA-Z0-9]用于排除字母数字字符。所以最后它会匹配除字母数字以外的任何ASCII字符。我说得对吗? 最佳答案 正则表达式解析器找到字符串中的每个字符并使用正则表达式对其进行检查。第一部分(?=...
我想实现一个简单的替换密码来屏蔽URL中的私有(private)ID。我知道我的ID会是什么样子(大写ASCII字母、数字和下划线的组合),而且它们会相当长,因为它们是组合键。我想使用更长的字母表来缩短生成的代码(我想使用大写和小写的ASCII字母、数字,别无其他)。所以我传入的字母表是[A-Z0-9_](37chars)我即将离任的字母表是[A-Za-z0-9](62chars)因此压缩近50%合理的压缩量将可用。假设我的URL如下所示:/my/page/GFZHFFFZFZTFZTF_24_F34我希望它们看起来像这样:/my/page/Ft32zfegZFV5显然,两个数组都将被
我有一个类似于以下任何内容的输入字符串:Z4352442946D92S4293488DFJ33基本上字符串可以包含字母字符或数字。但是它不能包含符号,只能包含字母和数字。我想掩盖它,使其看起来像这样:*****4429*****S429*****FJ33我到处寻找使用正则表达式来掩盖这一点的Java代码示例。我找到了thispost在堆栈上,但假设输入纯粹是一个数字。我将正则表达式调整为/\w(?=\w{4})/g以包含字符。似乎有效here.但是当我尝试用java实现它时,它不起作用。这是我的Java代码中的一行:Stringmask=accountNumber.replace("\
longl2=32;当我使用上面的语句时,我没有得到错误(我没有在最后使用l),但是当我使用下面的语句时,我得到这个错误:Theliteral3244444444oftypeintisoutofrangelongl2=3244444444;如果我使用longl2=3244444444l;,则没有错误。这是什么原因?长变量不强制使用l。 最佳答案 3244444444被解释为文字整数,但不能放入32位int变量中。它需要是一个literallongvalue,所以它需要在末尾有一个l或L:longl2=3244444444l;//or
我想知道有人会如何命名以首字母而不是单词开头的成员字段。publicclassMyClass{//Iknowthisishowitisforamemberfieldwithwords.privateStringmyString;//WhataboutthisString?Itisrepresentingtheterm"RVScale"whichis//shortfor"RecloseVoltsScale."privateStringRVScale;}我知道我可以只使用privateStringrecloseVoltsScale,但我宁愿保留它RVScale。如果有人知道它应该是rVSc