19

In the quest for localization I need to find all the string literals littered amongst our source code. I was looking for a way to script this into a post-modification source repository check. (I.E. after some one checks something in have a box setup to check this stat) I'll probably use NAnt and CruiseControl or something to handle the management of the CVS (Well StarTeam in my case :( ) But do you know of any scriptable (or command line) utility to accurately cycle through source code looking for string literals? I realize I could do simple string look up based on regular expressions but want a little more bang for my buck. (Maybe analyze the string or put it into categories) Because a lot of times the string may not necessarily require translation. Any ideas?

Adam Driscoll
  • 9,395
  • 9
  • 61
  • 104

6 Answers6

40

Visual Studio 2010 and earlier:

  1. Find In Files (CTRL+SHIFT+F)
  2. Use: Regular Expressions
  3. Find: :q (quoted string)
  4. Find All

Find Results window will now contain a report of all files, with line numbers and the line itself with the quoted string.

For Visual Studio 2012 and later search for ((\".+?\")|('.+?')) (reference, hat-tip to @CincauHangus)

Community
  • 1
  • 1
Duncan Smart
  • 31,172
  • 10
  • 68
  • 70
  • 4
    For newer Visual Studio you should use: ((\".+?\")|('.+?')) reference:http://msdn.microsoft.com/en-us/library/vstudio/2k3te2cs(v=vs.110).aspx – CincauHangus Feb 26 '13 at 08:27
  • For a narrower result use: (?<!(<.*|Resource.*|^.*\[.*))(\".+?\") This will eliminate resource files and decorations – Jeff Sep 16 '18 at 16:10
2

It uses the compiled binary instead of source, but Sysinternals' Strings app might be useful.

Chris Farmer
  • 24,974
  • 34
  • 121
  • 164
2
  1. Find In Files (CTRL+SHIFT+F)
  2. Find options -> Check Use Regular Expressions

For specific text within the literal:

  1. Find what: "+.*(MYSPECIFICTEXT)+.*"+

For all literals

  1. Find what: "+.*"+

Then

  1. Find All
1

To find all Text="textonly" instances use the following Regular Expression when searching:

(Text=)(")([a-z])

This is help for finding Text="*" but excluding text that's already been converted to use resource files:

Text="<%$ Resources:LocalizedText, KeyNameFromResourceFile%>"

Also (>)([a-z]) can be used to find literals between tags like so:

<h1>HeaderText</h1>
gleichdanke
  • 171
  • 2
  • 12
0

There's a C# parser on CodePlex that you can probably use.

Mark Cidade
  • 98,437
  • 31
  • 224
  • 236
0

hi this is regex for searching literals, that I use to find a text for translation. it also includes empty spaces and different quotes

regex:

([",`,'])([\w,\s]*)([",`,'])

searchstring: var test='This is a test';

Felipe Lavratti
  • 2,887
  • 16
  • 34